home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1994 March / Internet Info CD-ROM (Walnut Creek) (March 1994).iso / networking / mail / mh / updates / MH.6.7.1a < prev    next >
Encoding:
Text File  |  1992-01-29  |  107.9 KB  |  3,886 lines

  1. *** ../mh-6.7-dist/Patchlevel    Fri Dec 14 13:23:45 1990
  2. --- Patchlevel    Thu Jan 10 09:21:00 1991
  3. ***************
  4. *** 1 ****
  5. ! MH.6.7 patch.1
  6. --- 1 ----
  7. ! MH.6.7 patch.1a
  8. *** ../mh-6.7-dist/conf/doc/ADMIN.rf    Fri Dec 14 13:23:48 1990
  9. --- conf/doc/ADMIN.rf    Mon Jan  7 16:14:25 1991
  10. ***************
  11. *** 1,3 ****
  12.   .\"    @(MHWARNING)
  13. ! .\" @(#)$Id: ADMIN.rf,v 2.11 90/04/09 20:28:27 sources Exp $
  14.   .po +.75i
  15. --- 1,3 ----
  16.   .\"    @(MHWARNING)
  17. ! .\" @(#)$Id: ADMIN.rf,v 2.13 91/01/07 16:14:24 mh Exp $
  18.   .po +.75i
  19. ***************
  20. *** 173,174 ****
  21. --- 173,182 ----
  22.   ..
  23. + .de Uh
  24. + .ad
  25. + .sp
  26. + .ti .25i
  27. + .b "\\$1"
  28. + .sp
  29. + .fi
  30. + ..
  31.   .de Hh
  32. ***************
  33. *** 708,710 ****
  34.   The capabilities discussed here should not be used on a production basis,
  35. ! as they are either experimental or are useful for debugging \fIMH\fR.
  36.   
  37. --- 716,719 ----
  38.   The capabilities discussed here should not be used on a production basis,
  39. ! as they are either experimental, are useful for debugging \fIMH\fR, or
  40. ! are otherwise not recommended.
  41.   
  42. ***************
  43. *** 742,744 ****
  44.   `\-dashmunging' and `\-nodashmunging' which enable or disable
  45. ! the prepending of `\-\ ' in forwarded messages.
  46.   
  47. --- 751,754 ----
  48.   `\-dashmunging' and `\-nodashmunging' which enable or disable
  49. ! the prepending of `\-\ ' in forwarded messages.  To use 
  50. ! `\-nodashmunging', you must use an \fImhl\fR filter file.
  51.   
  52. *** ../mh-6.7-dist/conf/doc/MH.rf    Fri Dec 14 13:23:49 1990
  53. --- conf/doc/MH.rf    Fri Jan 25 15:49:37 1991
  54. ***************
  55. *** 1,3 ****
  56.   .\"    @(MHWARNING)
  57. ! .\" @(#)$Id: MH.rf,v 1.11 90/04/10 21:20:18 sources Exp $
  58.   .po +.75i
  59. --- 1,3 ----
  60.   .\"    @(MHWARNING)
  61. ! .\" @(#)$Id: MH.rf,v 1.15 91/01/25 15:49:34 mh Exp $
  62.   .po +.75i
  63. ***************
  64. *** 974,975 ****
  65. --- 974,983 ----
  66.   ..
  67. + .de Uh
  68. + .ad
  69. + .sp
  70. + .ti -.25i
  71. + .b "\\$1"
  72. + .sp
  73. + .fi
  74. + ..
  75.   .de Hh
  76. ***************
  77. *** 1116,1117 ****
  78. --- 1124,1126 ----
  79.   .so mh-profile.me
  80. + .so mh-sequence.me
  81.   .so ap.me
  82. ***************
  83. *** 1120,1121 ****
  84. --- 1129,1131 ----
  85.   .so install-mh.me
  86. + .so fmtdump.me
  87.   .so post.me
  88. ***************
  89. *** 1193,1194 ****
  90. --- 1203,1214 ----
  91.   argument.
  92. + .pp
  93. + A restricted form of message ranges are allowed with user\-defined
  94. + sequences. The form \*(lqname:n\*(rq, specifies up to the first `n' messages
  95. + which are part of the user\-defined sequence `name'.
  96. + A leading plus sign is allowed on `n', but is ignored.
  97. + The interpretation of n is overridden if n is preceded
  98. + by a minus sign;
  99. + `\-n' always means up to the last `n' messages which are part of the
  100. + sequence `name'.
  101. + .pp
  102.   Although all \fIMH\fR commands expand user\-defined sequences as appropriate,
  103. ***************
  104. *** 1223,1225 ****
  105.   Hence, if the named sequence already existed,
  106. ! the sequence is destroyed prior to being re\-defined
  107.   (nothing happens to the messages that were a part of this sequence,
  108. --- 1243,1245 ----
  109.   Hence, if the named sequence already existed,
  110. ! the sequence is destroyed prior to being re-defined
  111.   (nothing happens to the messages that were a part of this sequence,
  112. ***************
  113. *** 1912,1914 ****
  114.   .in 1i
  115. ! .ta \w'signed-number 'u +\w':=  'u +\w'user-defined-sequence  'u
  116.   msgs    :=    msgspec    |
  117. --- 1932,1934 ----
  118.   .in 1i
  119. ! .ta \w'user-defined-sequence 'u +\w':=  'u +\w'user-defined-sequence  'u
  120.   msgs    :=    msgspec    |
  121. ***************
  122. *** 1931,1933 ****
  123.   
  124. ! msg-range    :=    msg\*(lq-\*(rqmsg    |
  125.           \*(lqall\*(rq
  126. --- 1951,1953 ----
  127.   
  128. ! msg-range    :=    msg\*(lq\-\*(rqmsg    |
  129.           \*(lqall\*(rq
  130. ***************
  131. *** 1937,1940 ****
  132.   signed-number    :=    \*(lq+\*(rq<number>    |
  133. !         \*(lq-\*(rq<number>    |
  134.           <number>
  135.   .re
  136. --- 1957,1963 ----
  137.   signed-number    :=    \*(lq+\*(rq<number>    |
  138. !         \*(lq\-\*(rq<number>    |
  139.           <number>
  140. + user-defined-sequence    :=    <alpha>    |
  141. +         <alpha><alphanumeric>*
  142.   .re
  143. *** ../mh-6.7-dist/conf/doc/comp.rf    Fri Dec 14 13:23:53 1990
  144. --- conf/doc/comp.rf    Mon Dec 17 16:29:37 1990
  145. ***************
  146. *** 1,3 ****
  147.   .\"    @(MHWARNING)
  148. ! .\" @(#)$Id: comp.rf,v 1.5 90/04/05 15:12:17 sources Exp $
  149.   .SC COMP 1
  150. --- 1,3 ----
  151.   .\"    @(MHWARNING)
  152. ! .\" @(#)$Id: comp.rf,v 1.6 90/12/17 16:29:30 mh Exp $
  153.   .SC COMP 1
  154. ***************
  155. *** 70,71 ****
  156. --- 70,73 ----
  157.   
  158. + The `\-editor\ editor' switch indicates the editor to
  159. + use for the initial edit.
  160.   Upon exiting from the editor,
  161. ***************
  162. *** 96,98 ****
  163.   .Sa
  164. ! dist(1), forw(1), repl(1), send(1), whatnow(1)
  165.   .De
  166. --- 98,100 ----
  167.   .Sa
  168. ! dist(1), forw(1), repl(1), send(1), whatnow(1), mh-profile(5)
  169.   .De
  170. *** /dev/null    Fri Jan 25 16:03:46 1991
  171. --- conf/doc/fmtdump.rf    Fri Jan 25 15:47:32 1991
  172. ***************
  173. *** 0 ****
  174. --- 1,19 ----
  175. + .\"    @(MHWARNING)
  176. + .\" @(#)$Id: fmtdump.rf,v 1.2 91/01/25 15:47:30 mh Exp $
  177. + .SC FMTDUMP 8
  178. + .NA
  179. + fmtdump \- decode \fIMH\fP format files
  180. + .SY
  181. + @(MHETCPATH)/fmtdump formatfile
  182. + .DE
  183. + \fIFmtdump\fR is a program that parses an \fIMH\fP format file
  184. + and produces a pseudo-language listing of the how \fIMH\fP
  185. + interprets the file.
  186. + .Sa
  187. + mh-format(8), mh-sequences(8)
  188. + .Co
  189. + None
  190. + .Bu
  191. + The output may not be useful unless you are familiar
  192. + with the internals of the mh-format subroutines.
  193. + .En
  194. *** ../mh-6.7-dist/conf/doc/folder.rf    Fri Dec 14 13:23:53 1990
  195. --- conf/doc/folder.rf    Tue Dec 18 14:28:15 1990
  196. ***************
  197. *** 1,3 ****
  198.   .\"    @(MHWARNING)
  199. ! .\" @(#)$Id: folder.rf,v 1.5 90/04/05 15:12:37 sources Exp $
  200.   .SC FOLDER 1
  201. --- 1,3 ----
  202.   .\"    @(MHWARNING)
  203. ! .\" @(#)$Id: folder.rf,v 1.6 90/12/18 14:28:05 mh Exp $
  204.   .SC FOLDER 1
  205. ***************
  206. *** 108,110 ****
  207.   If the specified (or default) folder doesn't exist,
  208. ! the user will be queried if the folder should be created.
  209.   (This is the easy way to create an empty folder for use later.)
  210. --- 108,112 ----
  211.   If the specified (or default) folder doesn't exist,
  212. ! the user will be queried as to whether the folder should be created.
  213. ! When standard input is not a tty, the folder is
  214. ! created without any query.
  215.   (This is the easy way to create an empty folder for use later.)
  216. *** ../mh-6.7-dist/conf/doc/forw.rf    Fri Dec 14 13:23:53 1990
  217. --- conf/doc/forw.rf    Tue Dec 18 14:40:13 1990
  218. ***************
  219. *** 1,3 ****
  220.   .\"    @(MHWARNING)
  221. ! .\" @(#)$Id: forw.rf,v 1.9 90/04/05 15:08:44 sources Exp $
  222.   .SC FORW 1
  223. --- 1,3 ----
  224.   .\"    @(MHWARNING)
  225. ! .\" @(#)$Id: forw.rf,v 1.10 90/12/18 14:40:06 mh Exp $
  226.   .SC FORW 1
  227. ***************
  228. *** 115,116 ****
  229. --- 115,117 ----
  230.   when received, the message is suitable for bursting by \fIburst\fR\0(1).
  231. + This follows the Internet RFC\-934 guidelines.
  232.   
  233. ***************
  234. *** 207,208 ****
  235. --- 208,213 ----
  236.   \fIDist\fR and \fIrepl\fR don't have this problem.
  237. + To avoid prepending the leading dash characters in forwarded messages,
  238. + there is a `\-nodashmunging' option.  See the \*(lqHidden Features\*(rq
  239. + section of the \fIMH Administrator's Guide\fR for more details.
  240.   .En
  241. *** ../mh-6.7-dist/conf/doc/mark.rf    Fri Dec 14 13:23:54 1990
  242. --- conf/doc/mark.rf    Wed Dec 26 17:03:35 1990
  243. ***************
  244. *** 1,3 ****
  245.   .\"    @(MHWARNING)
  246. ! .\" @(#)$Id: mark.rf,v 1.5 90/04/05 15:12:51 sources Exp $
  247.   .SC MARK 1
  248. --- 1,3 ----
  249.   .\"    @(MHWARNING)
  250. ! .\" @(#)$Id: mark.rf,v 1.6 90/12/26 17:03:28 mh Exp $
  251.   .SC MARK 1
  252. ***************
  253. *** 80,83 ****
  254.   .in +.25i
  255. ! The name used to denote a message sequence must consist solely of
  256. ! alphabetic characters, and can not be one of the \*(lqreserved\*(rq
  257.   message names
  258. --- 80,84 ----
  259.   .in +.25i
  260. ! The name used to denote a message sequence must consist of
  261. ! an alphabetic character followed by zero or more
  262. ! alphanumeric characters, and can not be one of the \*(lqreserved\*(rq
  263.   message names
  264. ***************
  265. *** 88,92 ****
  266.   
  267. ! The name used to denote a message sequence can not occur as part of a
  268. ! message range, e.g., constructs like \*(lqseen:20\*(rq or
  269. ! \*(lqseen\-10\*(rq are forbidden.
  270.   .in -.25i
  271. --- 89,95 ----
  272.   
  273. ! Message ranges with user\-defined 
  274. ! sequence names are restricted to the form \*(lqname:n\*(rq or
  275. ! \*(lqname:-n\*(rq, and refer to the first or last `n' messages
  276. ! of the sequence `name', respectively.
  277. ! Constructs of the form \*(lqname1\-name2\*(rq are forbidden.
  278.   .in -.25i
  279. *** ../mh-6.7-dist/conf/doc/mh-chart.rf    Fri Dec 14 13:23:55 1990
  280. --- conf/doc/mh-chart.rf    Mon Jan  7 11:13:56 1991
  281. ***************
  282. *** 1,3 ****
  283.   .\"    @(MHWARNING)
  284. ! .\" @(#)$Id: mh-chart.rf,v 2.9 90/04/08 18:22:55 sources Exp $
  285.   .if '\*(ZZ'-man' \{\
  286. --- 1,3 ----
  287.   .\"    @(MHWARNING)
  288. ! .\" @(#)$Id: mh-chart.rf,v 2.10 91/01/07 11:13:54 mh Exp $
  289.   .if '\*(ZZ'-man' \{\
  290. ***************
  291. *** 383,384 ****
  292. --- 383,385 ----
  293.   \%[\-reverse] \%[\-noreverse]
  294. + \%[\-file filename]
  295.   \%[\-help]
  296. *** ../mh-6.7-dist/conf/doc/mh-format.rf    Fri Dec 14 13:23:55 1990
  297. --- conf/doc/mh-format.rf    Fri Jan 11 09:17:56 1991
  298. ***************
  299. *** 1,3 ****
  300.   .\"    @(MHWARNING)
  301. ! .\" @(#)$Id: mh-format.rf,v 1.26 90/04/05 15:09:13 sources Exp $
  302.   .SC MH\-FORMAT 5
  303. --- 1,3 ----
  304.   .\"    @(MHWARNING)
  305. ! .\" @(#)$Id: mh-format.rf,v 1.29 91/01/11 09:17:35 mh Exp $
  306.   .SC MH\-FORMAT 5
  307. ***************
  308. *** 31,33 ****
  309.   A format string consists of ordinary text, and special
  310. ! multi\-character \fIescape\fR sequences which begin with `%'.
  311.   When specifying a format string,
  312. --- 31,33 ----
  313.   A format string consists of ordinary text, and special
  314. ! multi-character \fIescape\fR sequences which begin with `%'.
  315.   When specifying a format string,
  316. ***************
  317. *** 39,41 ****
  318.   There are three types of \fIescape\fR sequences:
  319. ! header \fIcomponents\fR, built\-in \fIfunctions\fR, and, flow \fIcontrol\fR.
  320.   
  321. --- 39,41 ----
  322.   There are three types of \fIescape\fR sequences:
  323. ! header \fIcomponents\fR, built-in \fIfunctions\fR, and, flow \fIcontrol\fR.
  324.   
  325. ***************
  326. *** 54,67 ****
  327.   A \fIfunction\fR escape is specified as `%(\fIfunction\fR\^)'.
  328. ! All functions are built\-in, and most have a string or numeric value.
  329.   
  330. ! .ne 7
  331. ! A \fIcontrol\fR escape is one of: `%<', `%|', or `%>'.
  332. ! These form one of four conditional execution constructs with the
  333. ! following syntax:
  334. ! .sp 1
  335.   .nf
  336. !     %<(\fIfunction\fR\^)Command-String%>
  337. !     %<{\fIcomponent\fR\^}Command-String%>
  338. !     %<(\fIfunction\fR\^)Then-Command-String%|Else-Command-String%>
  339. !     %<{\fIcomponent\fR\^}Then-Command-String%|Else-Command-String%>
  340.   .fi
  341. --- 54,73 ----
  342.   A \fIfunction\fR escape is specified as `%(\fIfunction\fR\^)'.
  343. ! All functions are built-in, and most have a string or numeric value.
  344.   
  345. ! .ne 12
  346. ! .Uh "Control-flow escapes"
  347. ! A \fIcontrol\fR escape is one of: `%<', `%?', `%|', or `%>'. 
  348. ! These are combined into the conditional execution construct:
  349. ! .sp
  350.   .nf
  351. !     %<condition
  352. !         \fIformat text 1\fP
  353. !     %?condition2
  354. !         \fIformat text 2\fP
  355. !     %?condition3
  356. !         \fIformat text 3\fP
  357. !     \.\.\.
  358. !     %|
  359. !         \fIformat text N\fP
  360. !     %>
  361.   .fi
  362. ***************
  363. *** 68,86 ****
  364.   .sp
  365.   These constructs may be nested without ambiguity.
  366.   
  367. ! In the first two forms of the construct,
  368. ! if the function or component value is non\-zero (for integer\-valued escapes),
  369. ! or non\-empty (for string\-valued escapes),
  370. ! then everything up to the corresponding `%>'
  371. ! is interpreted, otherwise, skip to the corresponding '%>' and
  372. ! start interpreting again.
  373.   
  374. ! In the second two forms of the construct, 
  375. ! the first command string is interpreted
  376. ! if the function or component value is non\-zero or non\-null,
  377. ! and the second command string is interpreted otherwise.  Only one
  378. ! of the command strings will be interpreted.
  379. ! Interpreting the '%|' control escape causes 
  380. ! a skip to the corresponding '%>'.  
  381.   
  382.   .ne 10
  383. --- 74,132 ----
  384.   .sp
  385. + Extra white space is shown here only for clarity.
  386.   These constructs may be nested without ambiguity.
  387. + They form a general \fBif\-elseif\-else\-endif\fP block where
  388. + only one of the \fIformat text\fP segments is interpreted.
  389.   
  390. ! The `%<' and `%?' control escapes causes a condition to be evaluated.  
  391. ! This condition
  392. ! may be either a \fIcomponent\fP or a \fIfunction\fP.
  393. ! The four constructs have the following syntax:
  394. ! .sp 1
  395. ! .nf
  396. !     %<{component}
  397. !     %<(function)
  398. !     %?{component}
  399. !     %?(function)
  400. ! .fi
  401. ! .sp
  402. ! These control escapes test whether
  403. ! the function or component value is non-zero (for integer-valued escapes),
  404. ! or non-empty (for string-valued escapes).
  405.   
  406. ! If this test evaulates true,
  407. ! then the format text
  408. ! up to the next corresponding control escape 
  409. ! (one of `%|', `%?', or `%>')
  410. ! is interpreted normally.
  411. ! Next,
  412. ! all format text up to the corresponding `%>' control
  413. ! escape (if any) is skipped.
  414. ! The `%>' control escape is not interpreted;
  415. ! normal
  416. ! interpretation resumes after the `%>' escape.
  417.   
  418. + If the test evaluates false, however,
  419. + then the format text 
  420. + up to the next corresponding control escape
  421. + (again, one of `%|', `%?', or `%>')
  422. + is skipped, instead of being interpreted.
  423. + If the control escape encountered was `%?',
  424. + then the condition associated with that control escape is
  425. + evaluated, and interpretation
  426. + proceeds after that test
  427. + as described in the previous paragraph.
  428. + If the control escape encountered was `%|',
  429. + then the format text
  430. + up to the corresponding `%>' escape
  431. + is interpreted normally.
  432. + As above, 
  433. + the `%>' escape is not interpreted and normal
  434. + interpretation resumes after the `%>' escape.
  435. + The `%?' control escape and its following format text
  436. + is optional, and may be included zero or more times.
  437. + The `%|' control escape and its following format text
  438. + is also optional, and may be included zero or one times.
  439. + .Uh "Function escapes"
  440.   .ne 10
  441. ***************
  442. *** 119,120 ****
  443. --- 165,167 ----
  444.   .\" return values
  445. + .Uh "Return values"
  446.   Component escapes write the value of their message header in \fIstr\fR.
  447. ***************
  448. *** 157,159 ****
  449.   .\" dat    literal    int    ?
  450. ! nonzero    expr    boolean    \fInum\fR is non\-zero
  451.   zero    expr    boolean    \fInum\fR is zero
  452. --- 204,206 ----
  453.   .\" dat    literal    int    ?
  454. ! nonzero    expr    boolean    \fInum\fR is non-zero
  455.   zero    expr    boolean    \fInum\fR is zero
  456. ***************
  457. *** 160,162 ****
  458.   null    expr    boolean    \fIstr\fR is empty
  459. ! nonnull    expr    boolean    \fIstr\fR is non\-empty
  460.   void    expr        Set \fIstr\fR or \fInum\fR
  461. --- 207,209 ----
  462.   null    expr    boolean    \fIstr\fR is empty
  463. ! nonnull    expr    boolean    \fIstr\fR is non-empty
  464.   void    expr        Set \fIstr\fR or \fInum\fR
  465. ***************
  466. *** 165,167 ****
  467.   .\" compflag    comp    integer    Set \fInum\fR to component flags bits
  468. ! trim    expr        trim trailing white\-space from \fIstr\fR
  469.   putstr    expr        print \fIstr\fR
  470. --- 212,214 ----
  471.   .\" compflag    comp    integer    Set \fInum\fR to component flags bits
  472. ! trim    expr        trim trailing white-space from \fIstr\fR
  473.   putstr    expr        print \fIstr\fR
  474. ***************
  475. *** 202,204 ****
  476.   tws    date    string    official 822 rendering
  477. ! pretty    date    string    user\-friendly rendering
  478.   nodate    date    integer    \fIstr\fR not a date string
  479. --- 249,251 ----
  480.   tws    date    string    official 822 rendering
  481. ! pretty    date    string    user-friendly rendering
  482.   nodate    date    integer    \fIstr\fR not a date string
  483. ***************
  484. *** 216,218 ****
  485.   proper    addr    string    official 822 rendering
  486. ! friendly    addr    string    user\-friendly rendering
  487.   pers    addr    string    the personal name*
  488. --- 263,266 ----
  489.   proper    addr    string    official 822 rendering
  490. ! friendly    addr    string    user-friendly rendering
  491. ! addr    addr    string    mbox@host or host!mbox rendering*
  492.   pers    addr    string    the personal name*
  493. ***************
  494. *** 241,243 ****
  495.   .ti +.5i
  496. ! %<(mymbox{from} To: %{to}%>
  497.   
  498. --- 289,291 ----
  499.   .ti +.5i
  500. ! %<(mymbox{from}) To: %{to}%>
  501.   
  502. ***************
  503. *** 326,328 ****
  504.   if the message is from me,
  505. ! print `To:' followed by a \*(lquser\-friendly\*(rq rendering of the 
  506.   first address in the \*(lqTo:\*(rq field.
  507. --- 374,376 ----
  508.   if the message is from me,
  509. ! print `To:' followed by a \*(lquser-friendly\*(rq rendering of the 
  510.   first address in the \*(lqTo:\*(rq field.
  511. ***************
  512. *** 361,363 ****
  513.   
  514. ! If the \fIformataddr\fR result is non\-null, it is printed as
  515.   an address (with line folding if needed) in a field \fIwidth\fR
  516. --- 409,411 ----
  517.   
  518. ! If the \fIformataddr\fR result is non-null, it is printed as
  519.   an address (with line folding if needed) in a field \fIwidth\fR
  520. ***************
  521. *** 377,379 ****
  522.   
  523. ! If the result is non\-null, it is printed as above with a
  524.   leading label of \*(lqcc: \*(rq.
  525. --- 425,427 ----
  526.   
  527. ! If the result is non-null, it is printed as above with a
  528.   leading label of \*(lqcc: \*(rq.
  529. ***************
  530. *** 401,403 ****
  531.   .ti +.5i
  532. ! --------
  533.   .fi
  534. --- 449,451 ----
  535.   .ti +.5i
  536. ! \-\-\-\-\-\-\-\-
  537.   .fi
  538. ***************
  539. *** 407,412 ****
  540.   \*(lqYour message of \*(rq.  If the date was parseable, it is
  541. ! output in official format, otherwise it is output as\-is.
  542.   The message-id is included if present.
  543. ! As with all plain\-text,
  544. ! the row of dashes are output as\-is.
  545.   
  546. --- 455,460 ----
  547.   \*(lqYour message of \*(rq.  If the date was parseable, it is
  548. ! output in official format, otherwise it is output as-is.
  549.   The message-id is included if present.
  550. ! As with all plain-text,
  551. ! the row of dashes are output as-is.
  552.   
  553. ***************
  554. *** 413,415 ****
  555.   This last part is a good example for a little more elaboration.
  556. ! Here's that part again in pseudo\-code:
  557.   .sp 1
  558. --- 461,463 ----
  559.   This last part is a good example for a little more elaboration.
  560. ! Here's that part again in pseudo-code:
  561.   .sp 1
  562. *** ../mh-6.7-dist/conf/doc/mh-profile.rf    Fri Dec 14 13:23:56 1990
  563. --- conf/doc/mh-profile.rf    Tue Dec 18 12:49:22 1990
  564. ***************
  565. *** 1,3 ****
  566.   .\"    @(MHWARNING)
  567. ! .\" @(#)$Id: mh-profile.rf,v 1.7 90/04/05 15:09:46 sources Exp $
  568.   .SC MH\-PROFILE 5
  569. --- 1,3 ----
  570.   .\"    @(MHWARNING)
  571. ! .\" @(#)$Id: mh-profile.rf,v 1.8 90/12/18 12:49:13 mh Exp $
  572.   .SC MH\-PROFILE 5
  573. ***************
  574. *** 218,219 ****
  575. --- 218,222 ----
  576.   the file $HOME/.signature is consulted.
  577. + Your signature will be added to the address \fIsend\fP
  578. + puts in the \*(lqFrom:\*(rq header;
  579. + do not include an address in the signature text.
  580.   (profile, no default)
  581. *** /dev/null    Fri Jan 25 16:03:46 1991
  582. --- conf/doc/mh-sequence.rf    Wed Jan  9 11:34:46 1991
  583. ***************
  584. *** 0 ****
  585. --- 1,228 ----
  586. + .\"    @(MHWARNING)
  587. + .\" @(#)$Id: mh-sequence.rf,v 1.9 91/01/09 11:34:34 mh Exp $
  588. + .SC MH\-SEQUENCE 5
  589. + .NA
  590. + mh\-sequence \- sequence specification for MH message system
  591. + .SY
  592. + most \fIMH\fR commands
  593. + .DE
  594. + Most \fIMH\fP commands accept a `msg' or `msgs' specification, where
  595. + `msg' indicates one message and `msgs' indicates one or more
  596. + messages.
  597. + To designate a message, you may use either its number (e.g., 1, 10, 234)
  598. + or one of these \*(lqreserved\*(rq message names: 
  599. + .in +.5i
  600. + .sp 1
  601. + .nf
  602. + .ta +\w'\fIName\fP      'u
  603. + \fIName\fP    \fIDescription\fR
  604. + first    the first message in the folder
  605. + last    the last message in the folder
  606. + cur    the most recently accessed message
  607. + prev    the message numerically preceding \*(lqcur\*(rq
  608. + next    the message numerically following \*(lqcur\*(rq
  609. + .re
  610. + .fi
  611. + .in -.5i
  612. + In commands that take a `msg' argument, the default is \*(lqcur\*(rq.
  613. + As a shorthand, \*(lq\&.\*(rq is equivalent to \*(lqcur\*(rq.
  614. + For example: In a folder containing five messages numbered 5, 10, 94,
  615. + 177 and 325, \*(lqfirst\*(rq is 5 and \*(lqlast\*(rq is 325.
  616. + If \*(lqcur\*(rq is 94, then \*(lqprev\*(rq is 10 and \*(lqnext\*(rq
  617. + is 177.
  618. + The word `msgs' indicates that one or more messages may be specified.
  619. + Such a specification consists of one message designation or of several message
  620. + designations separated by spaces.
  621. + A message designation consists either 
  622. + of a message name as defined above, or a message range.
  623. + A message range is specified as \*(lqname1\-name2\*(rq
  624. + or \*(lqname:n\*(rq,
  625. + where `name', `name1' and `name2' are message names, and `n' is an integer.
  626. + The specification \*(lqname1\-name2\*(rq 
  627. + designates all currently-existing messages from `name1' to `name2' inclusive.
  628. + The message name \*(lqall\*(rq is a shorthand for the message
  629. + range \*(lqfirst\-last\*(rq.
  630. + The specification \*(lqname:n\*(rq designates up to `n' messages.
  631. + These messages start with `name' if `name' is a message number
  632. + or one of the reserved names \*(lqfirst\*(rq \*(lqcur\*(rq, or \*(lqnext\*(rq,
  633. + The messages end with `name' if `name' is \*(lqprev\*(rq or \*(lqlast\*(rq.
  634. + The interpretation of `n' may be overridden by preceding `n' with 
  635. + a plus or minus sign; `+n' always means up to `n' messages starting
  636. + with `name', and `\-n' always means up to `n' messages ending
  637. + with `name'.
  638. + In commands which accept a `msgs' argument, the default is either
  639. + \*(lqcur\*(rq or \*(lqall\*(rq, depending on which makes more sense.
  640. + Repeated specifications of the same message have the same effect as
  641. + a single specification of the message.
  642. + .Uh "User\-Defined Message Sequences"
  643. + In addition to the \*(lqreserved\*(rq (pre-defined) message names given above,
  644. + \fIMH\fP supports user-defined sequence names.
  645. + User-defined sequences allow the \fIMH\fR user a tremendous amount of power
  646. + in dealing with groups of messages in the same folder
  647. + by allowing the user to bind a group of messages to a meaningful symbolic
  648. + name.
  649. + The name used to denote a message sequence must consist of
  650. + an alphabetic character followed by zero or more
  651. + alphanumeric characters, and can not be one of the \*(lqreserved\*(rq
  652. + message names above.
  653. + After defining a sequence,
  654. + it can be used wherever an \fIMH\fR command expects a `msg' or `msgs'
  655. + argument.
  656. + Some forms of message ranges are allowed with user-defined
  657. + sequences.  The 
  658. + specification \*(lqname:n\*(rq may be used, and it
  659. + designates up to the first `n' messages (or last `n' messages for `\-n')
  660. + which are elements of the user-defined sequence `name'.
  661. + The specifications \*(lqname:next\*(rq and \*(lqname:prev\*(rq
  662. + may also be used, and they designate the
  663. + next or previous message (relative to the current message)
  664. + which is an element of the user-defined sequence `name'.
  665. + The specificaitions 
  666. + \*(lqname:first\*(rq and \*(lqname:last\*(rq are equivalent
  667. + to \*(lqname:1\*(rq and \*(lqname:\-1\*(rq, respectively.
  668. + The specification \*(lqname:cur\*(rq is not allowed
  669. + (use just \*(lqcur\*(rq instead).
  670. + The syntax of these message range
  671. + specifcations is subject to change
  672. + in the future.
  673. + User-defined sequence names 
  674. + are specific to each folder.
  675. + They are defined using the \fIpick\fP and \fImark\fP commands.
  676. + .Uh "Public and Private User-Defined Sequences"
  677. + There are two varieties of sequences: \fIpublic\fR sequences
  678. + and \fIprivate\fR sequences.
  679. + \fIPublic\fR sequences of a folder are accessible to any \fIMH\fR user that
  680. + can read that folder and are kept in the \&.mh\(rusequences file in the folder.
  681. + \fIPrivate\fR sequences are accessible only to the \fIMH\fR user that defined
  682. + those sequences and are kept in the user's \fIMH\fR context file.
  683. + By default,
  684. + \fIpick\fR and \fImark\fR create \fIpublic\fR sequences
  685. + if the folder for which the sequences are being defined is writable by the
  686. + \fIMH\fR user.
  687. + Otherwise, \fIprivate\fR sequences are created.
  688. + This can be overridden with the `\-public' and `\-private' switches
  689. + to \fImark\fP.
  690. + .Uh "Sequence Negation"
  691. + \fIMH\fP provides the ability to select all messages
  692. + not elements of a user-defined sequence.  To do this,
  693. + the user should define the entry
  694. + \*(lqSequence\-Negation\*(rq in the \fIMH\fR profile file;
  695. + its value may be any string.
  696. + This string is then used to preface an existing user-defined
  697. + sequence name.  This specification then refers to those messages
  698. + not elements of the specified sequence name.
  699. + For example, if the profile entry is:
  700. + .ti +.5i
  701. + Sequence\-Negation:\^ not
  702. + then anytime an \fIMH\fR command is given \*(lqnotfoo\*(rq as a `msg' or
  703. + `msgs' argument,
  704. + it would substitute all messages that are not elements of the sequence
  705. + \*(lqfoo\*(rq.
  706. + Obviously,
  707. + the user should beware of defining sequences with names that
  708. + begin with the value of the
  709. + \*(lqSequence\-Negation\*(rq profile entry.
  710. + .Uh "The Previous Sequence"
  711. + \fIMH\fR provides the ability
  712. + to remember the `msgs' or
  713. + `msg' argument last given to an \fIMH\fR command.
  714. + The entry \*(lqPrevious\-Sequence\*(rq should be defined in the
  715. + \fIMH\fR profile; its value should be a sequence name or multiple
  716. + sequence names separated by spaces.
  717. + If this entry is defined, when
  718. + when an \fIMH\fP command finishes,
  719. + it will define the sequence(s) named in the value of this entry to be
  720. + those messages that were specified to the command.
  721. + Hence, a profile entry of
  722. + .ti +.5i
  723. + Previous\-Sequence:\^ pseq
  724. + directs any \fIMH\fR command that accepts a `msg' or `msgs' argument to
  725. + define the sequence \*(lqpseq\*(rq as those messages when it finishes.
  726. + \fBNote:\fP there can be a performance penalty in using the  
  727. + \*(lqPrevious\-Sequence\*(rq facility.
  728. + If it is used,
  729. + \fBall\fP \fIMH\fR programs have to write the sequence information 
  730. + to the \&.mh\(rusequences file for
  731. + the folder each time they run.
  732. + If the \*(lqPrevious\-Sequence\*(rq profile entry is not included,
  733. + only \fIpick\fR and \fImark\fR will write to the \&.mh\(rusequences file.
  734. + .Uh "The Unseen Sequence"
  735. + Finally, some users like to indicate messages which have not been
  736. + previously seen by them.
  737. + Both \fIinc\fR and \fIshow\fR honor the profile entry
  738. + \*(lqUnseen\-Sequence\*(rq to support this activity.
  739. + This entry in the \&.mh\(ruprofile should be defined
  740. + as one or more sequence names separated by spaces.
  741. + If there is a value for \*(lqUnseen\-Sequence\*(rq in the profile,
  742. + then whenever \fIinc\fR places new messages in a folder,
  743. + the new messages will also be added to the sequence(s) named
  744. + in the value of this entry.
  745. + Hence, a profile entry of
  746. + .ti +.5i
  747. + Unseen\-Sequence:\^ unseen
  748. + directs \fIinc\fR to add new messages to the sequence \*(lqunseen\*(rq.
  749. + Unlike the behavior of the \*(lqPrevious\-Sequence\*(rq entry in the profile,
  750. + however, the sequence(s) will \fBnot\fR be zeroed by \fIinc\fP.
  751. + Similarly,
  752. + whenever \fIshow\fR (or \fInext\fR or \fIprev\fR\^) displays a message,
  753. + that message will be removed
  754. + from any sequences named by the
  755. + \*(lqUnseen\-Sequence\*(rq entry in the profile.
  756. + .Fi
  757. + ^$HOME/\&.mh\(ruprofile~^The user profile
  758. + ^<mh\-dir>/context~^The user context
  759. + ^<folder>/\&.mh\(rusequences~^Public sequences for <folder>
  760. + .Pr
  761. + ^Sequence\-Negation:~^To designate messages not in a sequence
  762. + .Ps
  763. + ^Previous\-Sequence:~^The last message specification given
  764. + .Ps
  765. + ^Unseen\-Sequence:~^Those messages not yet seen by the user
  766. + .Sa
  767. + mh(1), mark(1), pick(1), mh-profile(5)
  768. + .De
  769. + None
  770. + .Co
  771. + All
  772. + .Bu
  773. + User-defined sequences are stored in the \&.mh\(rusequences file 
  774. + as a series of message specifications separated by spaces.
  775. + If a user-defined sequence contains too many individual
  776. + message specifications,
  777. + that line in the file may become too long for \fIMH\fP to handle.
  778. + This will generate the error message \*(lq\&.mh\(rusequences is
  779. + poorly formatted\*(rq.  You'll have to edit the file by hand to
  780. + remove the offending line. 
  781. + This can happen to users who define the \*(lqPrevious\-Sequence\*(rq entry in
  782. + the \fIMH\fP profile
  783. + and have a folder containing many messages with gaps in the numbering.
  784. + A workaround for large folders is to minimize numbering gaps by using
  785. + \*(lqfolder\ \-pack\*(rq often.
  786. + .En
  787. *** ../mh-6.7-dist/conf/doc/mh-tailor.rf    Fri Dec 14 13:23:56 1990
  788. --- conf/doc/mh-tailor.rf    Mon Jan  7 16:13:31 1991
  789. ***************
  790. *** 1,13 ****
  791.   .\"    @(MHWARNING)
  792. ! .\" @(#)$Id: mh-tailor.rf,v 2.9 90/04/09 09:33:58 sources Exp $
  793. ! .if !'\*(ZZ'-man' \{\
  794. ! .rm SS
  795. ! .de SS
  796. ! .sp
  797. ! .in .25i
  798. ! .b "\\s-2\&\\$1 \|\\$2 \|\\$3 \|\\$4 \|\\$5 \|\\$6\\s0"
  799. ! .sp
  800. ! .in .5i
  801. ! ..
  802. ! .\}
  803.   .SC MH\-TAILOR 5
  804. --- 1,3 ----
  805.   .\"    @(MHWARNING)
  806. ! .\" @(#)$Id: mh-tailor.rf,v 2.11 91/01/07 16:13:27 mh Exp $
  807.   .SC MH\-TAILOR 5
  808. ***************
  809. *** 87,89 ****
  810.   A value of \*(lq0\*(rq means to use \fIflock\fR if available,
  811. ! standard \fIBellMail\fR locking otherwise.
  812.   A value of \*(lq1\*(rq means to use \fIBellMail\fR locking always
  813. --- 77,81 ----
  814.   A value of \*(lq0\*(rq means to use \fIflock\fR if available,
  815. ! or \fIlockf\fR if \fBLOCKF\fP was defined when building \fIMH\fP.
  816. ! On non-\fBBSD42\fP systems,
  817. ! standard \fIBellMail\fR locking is used.
  818.   A value of \*(lq1\*(rq means to use \fIBellMail\fR locking always
  819. ***************
  820. *** 97,99 ****
  821.   The name of the directory for making locks.
  822. ! If your system doesn't have the \fIflock\fR syscall,
  823.   then this directory is used when creating locks.
  824. --- 89,91 ----
  825.   The name of the directory for making locks.
  826. ! If your system doesn't have the \fIflock\fR or \fIlockf\fP syscalls,
  827.   then this directory is used when creating locks.
  828. ***************
  829. *** 123,125 ****
  830.   .\" @BEGIN: MF
  831. ! .SS "Mail Filtering"
  832.   These options are only available if you compiled \fIMH\fP with
  833. --- 115,118 ----
  834.   .\" @BEGIN: MF
  835. ! .in -.5i
  836. ! .Uh "Mail Filtering"
  837.   These options are only available if you compiled \fIMH\fP with
  838. ***************
  839. *** 155,157 ****
  840.   .\" @BEGIN: MHMTS
  841. ! .SS "Stand-Alone Delivery"
  842.   These options are only available if you compiled \fIMH\fP 
  843. --- 148,151 ----
  844.   .\" @BEGIN: MHMTS
  845. ! .in -.5i
  846. ! .Uh "Stand-Alone Delivery"
  847.   These options are only available if you compiled \fIMH\fP 
  848. ***************
  849. *** 216,218 ****
  850.   .\" @BEGIN: SMTP
  851. ! .SS "The \*(lq/smtp\*(rq MTS Suffix"
  852.   These options are only available if you compiled \fIMH\fP with
  853. --- 210,213 ----
  854.   .\" @BEGIN: SMTP
  855. ! .in -.5i
  856. ! .Uh "The `/smtp' MTS Suffix"
  857.   These options are only available if you compiled \fIMH\fP with
  858. ***************
  859. *** 257,259 ****
  860.   .\" @BEGIN: SENDMTS
  861. ! .SS "SendMail"
  862.   This option is only available if you compiled \fIMH\fP to
  863. --- 252,255 ----
  864.   .\" @BEGIN: SENDMTS
  865. ! .in -.5i
  866. ! .Uh "SendMail"
  867.   This option is only available if you compiled \fIMH\fP to
  868. ***************
  869. *** 268,270 ****
  870.   .\" @BEGIN: POP
  871. ! .SS "Post Office Protocol"
  872.   This option is only available if you compiled \fIMH\fP with POP
  873. --- 264,267 ----
  874.   .\" @BEGIN: POP
  875. ! .in -.5i
  876. ! .Uh "Post Office Protocol"
  877.   This option is only available if you compiled \fIMH\fP with POP
  878. ***************
  879. *** 282,284 ****
  880.   .\" @BEGIN: BBSERVER
  881. ! .SS "BBoards Delivery"
  882.   This option is only available if you compiled \fIMH\fP with
  883. --- 279,282 ----
  884.   .\" @BEGIN: BBSERVER
  885. ! .in -.5i
  886. ! .Uh "BBoards Delivery"
  887.   This option is only available if you compiled \fIMH\fP with
  888. ***************
  889. *** 293,295 ****
  890.   .\" @BEGIN: BPOP
  891. ! .SS "BBoards & The POP"
  892.   These options are only available if you compiled \fIMH\fP with
  893. --- 291,294 ----
  894.   .\" @BEGIN: BPOP
  895. ! .in -.5i
  896. ! .Uh "BBoards & The POP"
  897.   These options are only available if you compiled \fIMH\fP with
  898. ***************
  899. *** 323,325 ****
  900.   .\" @BEGIN: NNTP
  901. ! .SS "BBoards & The NNTP"
  902.   This option is only available if you compiled \fIMH\fP with
  903. --- 322,325 ----
  904.   .\" @BEGIN: NNTP
  905. ! .in -.5i
  906. ! .Uh "BBoards & The NNTP"
  907.   This option is only available if you compiled \fIMH\fP with
  908. ***************
  909. *** 335,337 ****
  910.   .in -.5i
  911.   A few words on locking:
  912. --- 335,337 ----
  913.   .in -.5i
  914. ! .Uh "File Locking"
  915.   A few words on locking:
  916. ***************
  917. *** 343,346 ****
  918.   The \*(lqlockstyle\*(rq variable can take on three values: 0, 1, 2.
  919. ! A value of 0 says to use the flock syscall if you're running on 4.2BSD,
  920. ! (otherwise use a locking style of 1).
  921.   A value of 1 or 2 specifies that a file should be created whose existence
  922. --- 343,350 ----
  923.   The \*(lqlockstyle\*(rq variable can take on three values: 0, 1, 2.
  924. ! A value of 0 is useful on \fBBSD42\fP systems.
  925. ! If you included the \fBLOCKF\fP option when building \fIMH\fP, the
  926. ! \fIlockf\fP syscall is used, otherwise the \fIflock\fP syscall is used.
  927. ! If you're not on a 4.2BSD system,
  928. ! a locking style of 0 is considered the same as locking style 1.
  929.   A value of 1 or 2 specifies that a file should be created whose existence
  930. *** ../mh-6.7-dist/conf/doc/mh.rf    Fri Dec 14 13:23:56 1990
  931. --- conf/doc/mh.rf    Mon Jan  7 16:56:42 1991
  932. ***************
  933. *** 1,3 ****
  934.   .\"    @(MHWARNING)
  935. ! .\" @(#)$Id: mh.rf,v 1.9 90/04/05 15:08:50 sources Exp $
  936.   .if '\*(ZZ'-man' \{\
  937. --- 1,3 ----
  938.   .\"    @(MHWARNING)
  939. ! .\" @(#)$Id: mh.rf,v 1.10 91/01/07 16:56:36 mh Exp $
  940.   .if '\*(ZZ'-man' \{\
  941. ***************
  942. *** 201,202 ****
  943. --- 201,203 ----
  944.   ^mh\-profile (5)~^\- user customization for MH message system
  945. + ^mh\-sequence (5)~^\- sequence specification for MH message system
  946.   .sp 1
  947. *** ../mh-6.7-dist/conf/doc/next.rf    Fri Dec 14 13:23:58 1990
  948. --- conf/doc/next.rf    Mon Dec 17 16:03:38 1990
  949. ***************
  950. *** 1,3 ****
  951.   .\"    @(MHWARNING)
  952. ! .\" @(#)$Id: next.rf,v 1.5 90/04/05 15:13:47 sources Exp $
  953.   .SC NEXT 1
  954. --- 1,3 ----
  955.   .\"    @(MHWARNING)
  956. ! .\" @(#)$Id: next.rf,v 1.6 90/12/17 16:03:31 mh Exp $
  957.   .SC NEXT 1
  958. ***************
  959. *** 32,35 ****
  960.   `+folder' defaults to the current folder
  961. - .Ds
  962. - `\-format'
  963.   .Ds
  964. --- 32,33 ----
  965. *** ../mh-6.7-dist/conf/doc/pick.rf    Fri Dec 14 13:23:58 1990
  966. --- conf/doc/pick.rf    Tue Dec 18 14:57:43 1990
  967. ***************
  968. *** 1,3 ****
  969.   .\"    @(MHWARNING)
  970. ! .\" @(#)$Id: pick.rf,v 1.5 90/04/05 15:14:01 sources Exp $
  971.   .SC PICK 1
  972. --- 1,3 ----
  973.   .\"    @(MHWARNING)
  974. ! .\" @(#)$Id: pick.rf,v 1.6 90/12/18 14:57:30 mh Exp $
  975.   .SC PICK 1
  976. ***************
  977. *** 85,86 ****
  978. --- 85,92 ----
  979.   
  980. + Note that since the `\-date' switch is a pattern matching operation (as 
  981. + described above),
  982. + to find messages sent on a certain date
  983. + the pattern string must match the text of the
  984. + \*(lqDate:\*(rq field of the message.
  985.   Independent of any pattern matching operations requested,
  986. ***************
  987. *** 92,99 ****
  988.   the `\-datefield\ field' switch may be used.
  989. ! \fIPick\fR will actually parse the date fields in each of the messages
  990.   specified in `msgs'
  991. ! (unlike the `\-date' switch described above which does a pattern matching
  992. ! operation),
  993. ! and compare them to the date/time specified by use of the `\-after'
  994. ! and `\-before' switches.
  995.   If `\-after' is given,
  996. --- 98,104 ----
  997.   the `\-datefield\ field' switch may be used.
  998. ! With `\-before' and `\-after',
  999. ! \fIpick\fR will actually parse the date fields in each of the messages
  1000.   specified in `msgs'
  1001. ! and compare them to the date/time specified.
  1002.   If `\-after' is given,
  1003. ***************
  1004. *** 111,112 ****
  1005. --- 116,118 ----
  1006.   All defaults are taken from the current date, time, and timezone.
  1007.   In addition to 822\-style dates,
  1008. ***************
  1009. *** 115,117 ****
  1010.   and the special dates
  1011. ! \*(lqtoday\*(rq, \*(lqyesterday\*(rq, and \*(lqtomorrow\*(rq.
  1012.   All days of the week are judged to refer to a day in the past
  1013. --- 121,124 ----
  1014.   and the special dates
  1015. ! \*(lqtoday\*(rq, \*(lqyesterday\*(rq (24 hours ago),
  1016. ! and \*(lqtomorrow\*(rq (24 hours from now).
  1017.   All days of the week are judged to refer to a day in the past
  1018. ***************
  1019. *** 120,121 ****
  1020. --- 127,129 ----
  1021.   not \*(lqthis\ saturday\*(rq).
  1022.   Finally, in addition to these special specifications,
  1023. *** ../mh-6.7-dist/conf/doc/prev.rf    Fri Dec 14 13:23:59 1990
  1024. --- conf/doc/prev.rf    Mon Dec 17 16:03:40 1990
  1025. ***************
  1026. *** 1,3 ****
  1027.   .\"    @(MHWARNING)
  1028. ! .\" @(#)$Id: prev.rf,v 1.5 90/04/05 15:14:42 sources Exp $
  1029.   .SC PREV 1
  1030. --- 1,3 ----
  1031.   .\"    @(MHWARNING)
  1032. ! .\" @(#)$Id: prev.rf,v 1.6 90/12/17 16:03:39 mh Exp $
  1033.   .SC PREV 1
  1034. ***************
  1035. *** 32,35 ****
  1036.   `+folder' defaults to the current folder
  1037. - .Ds
  1038. - `\-format'
  1039.   .Ds
  1040. --- 32,33 ----
  1041. *** ../mh-6.7-dist/conf/doc/prompter.rf    Fri Dec 14 13:23:59 1990
  1042. --- conf/doc/prompter.rf    Tue Dec 18 15:12:08 1990
  1043. ***************
  1044. *** 1,3 ****
  1045.   .\"    @(MHWARNING)
  1046. ! .\" @(#)$Id: prompter.rf,v 1.6 90/04/05 15:09:05 sources Exp $
  1047.   .SC PROMPTER 1
  1048. --- 1,3 ----
  1049.   .\"    @(MHWARNING)
  1050. ! .\" @(#)$Id: prompter.rf,v 1.7 90/12/18 15:12:01 mh Exp $
  1051.   .SC PROMPTER 1
  1052. ***************
  1053. *** 102,103 ****
  1054. --- 102,112 ----
  1055.   None
  1056. + .Hh
  1057. + The `\-rapid' option is particularly useful with \fIforw\fP, and
  1058. + `\-noprepend' is useful with \fIcomp\ \-use\fP.
  1059. + The user may wish to link \fIprompter\fR under several names
  1060. + (e.g., \*(lqrapid\*(rq) and give appropriate switches
  1061. + in the profile entries under these names (e.g., \*(lqrapid: -rapid\*(rq).
  1062. + This facilitates invoking prompter differently for 
  1063. + different \fIMH\fP commands (e.g., \*(lqforw: -editor rapid\*(rq).
  1064.   .Bu
  1065. *** ../mh-6.7-dist/conf/doc/refile.rf    Fri Dec 14 13:24:00 1990
  1066. --- conf/doc/refile.rf    Fri Jan 25 15:22:04 1991
  1067. ***************
  1068. *** 1,3 ****
  1069.   .\"    @(MHWARNING)
  1070. ! .\" @(#)$Id: refile.rf,v 1.5 90/04/05 15:14:54 sources Exp $
  1071.   .SC REFILE 1
  1072. --- 1,3 ----
  1073.   .\"    @(MHWARNING)
  1074. ! .\" @(#)$Id: refile.rf,v 1.8 91/01/14 16:43:06 mh Exp $
  1075.   .SC REFILE 1
  1076. ***************
  1077. *** 13,14 ****
  1078. --- 13,15 ----
  1079.   \%[\-file\ file] 
  1080. + \%[\-rmmproc program] \%[\-normmproc]
  1081.   +folder ...
  1082. ***************
  1083. *** 61,66 ****
  1084.   If `\-link' is not specified (or `\-nolink' is specified),
  1085. ! the filed messages will be removed (\fIunlink\fR\0(2)) from the
  1086. ! source folder,
  1087. ! similar to the way \fImv\fR\0(1) works.
  1088.   
  1089.   If the user has a profile component such as
  1090. --- 62,68 ----
  1091.   If `\-link' is not specified (or `\-nolink' is specified),
  1092. ! the filed messages will be removed from the
  1093. ! source folder, by renaming them with a site-dependent prefix (usually 
  1094. ! a comma).
  1095.   
  1096. + .ne 4
  1097.   If the user has a profile component such as
  1098. ***************
  1099. *** 69,73 ****
  1100.   
  1101. ! then instead of simply renaming the message file,
  1102. ! \fIrefile\fR
  1103. ! will call the named program to delete the file.
  1104.   
  1105. --- 71,79 ----
  1106.   
  1107. ! then \fIrefile\fR
  1108. ! will instead call the named program to delete the message files.
  1109. ! The user may specify `\-rmmproc program' on the command line
  1110. ! to override this profile specification.
  1111. ! The \`-normmproc' option forces 
  1112. ! the message files to be deleted
  1113. ! by renaming them as described above.
  1114.   
  1115. ***************
  1116. *** 106,107 ****
  1117. --- 112,118 ----
  1118.   See \fImh\-profile\fR\0(1) for information concerning the previous sequence.
  1119. + .Bu
  1120. + Since \fIrefile\fR uses your \fIrmmproc\fP to delete the message,
  1121. + the \fIrmmproc\fP must \fBNOT\fP call \fIrefile\fP without 
  1122. + specifying `\-normmproc',
  1123. + or you will create an infinte loop.
  1124.   .En
  1125. *** ../mh-6.7-dist/conf/doc/repl.rf    Fri Dec 14 13:24:00 1990
  1126. --- conf/doc/repl.rf    Mon Dec 17 16:00:43 1990
  1127. ***************
  1128. *** 1,3 ****
  1129.   .\"    @(MHWARNING)
  1130. ! .\" @(#)$Id: repl.rf,v 1.9 90/04/05 15:09:27 sources Exp $
  1131.   .SC REPL 1
  1132. --- 1,3 ----
  1133.   .\"    @(MHWARNING)
  1134. ! .\" @(#)$Id: repl.rf,v 1.10 90/12/17 16:00:35 mh Exp $
  1135.   .SC REPL 1
  1136. ***************
  1137. *** 209,212 ****
  1138.   `\-nocc\ all' at ATHENA sites, `\-cc\ all' otherwise
  1139. - .Ds
  1140. - `\-format'
  1141.   .Ds
  1142. --- 209,210 ----
  1143. *** ../mh-6.7-dist/conf/doc/rmm.rf    Fri Dec 14 13:24:00 1990
  1144. --- conf/doc/rmm.rf    Fri Jan 25 15:22:30 1991
  1145. ***************
  1146. *** 1,3 ****
  1147.   .\"    @(MHWARNING)
  1148. ! .\" @(#)$Id: rmm.rf,v 1.5 90/04/05 15:15:12 sources Exp $
  1149.   .SC RMM 1
  1150. --- 1,3 ----
  1151.   .\"    @(MHWARNING)
  1152. ! .\" @(#)$Id: rmm.rf,v 1.10 91/01/25 15:22:28 mh Exp $
  1153.   .SC RMM 1
  1154. ***************
  1155. *** 53,54 ****
  1156. --- 53,59 ----
  1157.   If a folder is given, it will become the current folder.
  1158. + .Bu
  1159. + Since \fIrefile\fR uses your \fIrmmproc\fP to delete the message,
  1160. + the \fIrmmproc\fP must \fBNOT\fP call \fIrefile\fP without
  1161. + specifying `\-normmproc',
  1162. + or you will create an infinte loop.
  1163.   .En
  1164. *** ../mh-6.7-dist/conf/doc/scan.rf    Fri Dec 14 13:24:01 1990
  1165. --- conf/doc/scan.rf    Mon Jan  7 11:13:54 1991
  1166. ***************
  1167. *** 1,3 ****
  1168.   .\"    @(MHWARNING)
  1169. ! .\" @(#)$Id: scan.rf,v 1.8 90/04/05 15:10:08 sources Exp $
  1170.   .SC SCAN 1
  1171. --- 1,3 ----
  1172.   .\"    @(MHWARNING)
  1173. ! .\" @(#)$Id: scan.rf,v 1.9 91/01/07 11:13:47 mh Exp $
  1174.   .SC SCAN 1
  1175. ***************
  1176. *** 14,15 ****
  1177. --- 14,16 ----
  1178.   \%[\-reverse] \%[\-noreverse]
  1179. + \%[\-file filename]
  1180.   \%[\-help]
  1181. ***************
  1182. *** 96,98 ****
  1183.   Also, if no date header was present in the message, the \fIfunction\fR
  1184. ! escapes which operate on {\fIdate\|} will return values for the 
  1185.   date of last modification of the message file itself.
  1186. --- 97,99 ----
  1187.   Also, if no date header was present in the message, the \fIfunction\fR
  1188. ! escapes which operate on {\fIdate\fP\|} will return values for the 
  1189.   date of last modification of the message file itself.
  1190. ***************
  1191. *** 99,100 ****
  1192. --- 100,102 ----
  1193.   
  1194.   \fIscan\fR will update the \fIMH\fR context prior to starting the listing,
  1195. ***************
  1196. *** 140,142 ****
  1197.   any following headers with the same component name are ignored.
  1198. ! .br
  1199.   The switch `\-reverse', makes \fIscan\fR list the messages
  1200. --- 142,144 ----
  1201.   any following headers with the same component name are ignored.
  1202. ! .sp
  1203.   The switch `\-reverse', makes \fIscan\fR list the messages
  1204. ***************
  1205. *** 143,144 ****
  1206. --- 145,152 ----
  1207.   in reverse order; this should be considered a bug.
  1208. + .sp
  1209. + The `\-file filename' switch allows the user to obtain a \fIscan\fP
  1210. + listing of a maildrop file as produced by \fIpackf\fP.  This listing
  1211. + includes every message in the file.  The user should use \fImsh\fP
  1212. + for more selective processing of the file.  `\-reverse' is ignored
  1213. + with this option.
  1214.   .En
  1215. *** ../mh-6.7-dist/conf/doc/tmac.h    Fri Dec 14 13:24:02 1990
  1216. --- conf/doc/tmac.h    Mon Jan  7 16:12:51 1991
  1217. ***************
  1218. *** 1,5 ****
  1219.   .\"    @(MHWARNING)
  1220. ! .\" @(#)$Id: tmac.h,v 1.5 90/04/05 15:40:17 sources Exp $
  1221.   .\"    Try to keep only one copy of the documentation around
  1222.   .\"    by re-defining macros and so forth.
  1223.   .\"
  1224. --- 1,5 ----
  1225.   .\"    @(MHWARNING)
  1226. ! .\" @(#)$Id: tmac.h,v 1.6 91/01/07 16:12:37 mh Exp $
  1227.   .\"    Try to keep only one copy of the documentation around
  1228.   .\"    by re-defining macros and so forth.
  1229.   .\"
  1230. ***************
  1231. *** 66,69 ****
  1232. --- 66,73 ----
  1233.   ..
  1234.   .de ip
  1235.   .IP "\\$1" \\$2
  1236. + ..
  1237. + .de Uh
  1238. + .ne 4
  1239. + .SS "\\$1"
  1240.   ..
  1241. *** ../mh-6.7-dist/conf/doc/whatnow.rf    Fri Dec 14 13:24:02 1990
  1242. --- conf/doc/whatnow.rf    Tue Dec 18 15:44:41 1990
  1243. ***************
  1244. *** 1,3 ****
  1245.   .\"    @(MHWARNING)
  1246. ! .\" @(#)$Id: whatnow.rf,v 1.6 90/04/05 15:09:20 sources Exp $
  1247.   .SC WHATNOW 1
  1248. --- 1,3 ----
  1249.   .\"    @(MHWARNING)
  1250. ! .\" @(#)$Id: whatnow.rf,v 1.7 90/12/18 15:44:22 mh Exp $
  1251.   .SC WHATNOW 1
  1252. ***************
  1253. *** 24,26 ****
  1254.   prompts the user with \*(lqWhat now?\*(rq and awaits a response.
  1255. ! The valid responses are 
  1256.   .nf
  1257. --- 24,27 ----
  1258.   prompts the user with \*(lqWhat now?\*(rq and awaits a response.
  1259. ! The valid responses are:
  1260.   .nf
  1261. ***************
  1262. *** 111,112 ****
  1263. --- 112,120 ----
  1264.   it with a leading comma); failure of a later edit preverves the draft.
  1265. + If \fIwhatnowproc\fR is \fIwhatnow\fR,
  1266. + then \fIcomp\fR, \fIdist\fP, \fIforw\fP, and \fIrepl\fP use
  1267. + a built\-in \fIwhatnow\fR,
  1268. + and do not actually run the \fIwhatnow\fR program.
  1269. + Hence, if you define your own \fIwhatnowproc\fR,
  1270. + don't call it \fIwhatnow\fR since it won't be run.
  1271.   
  1272. *** /dev/null    Fri Jan 25 16:03:46 1991
  1273. --- conf/examples/uci.sun    Fri Jan 25 09:27:34 1991
  1274. ***************
  1275. *** 0 ****
  1276. --- 1,39 ----
  1277. + # uci.sun - for a Sun3 or Sun4 running Sun OS 4.1
  1278. + bin    /usr/local
  1279. + bbhome    /usr/bboards
  1280. + etc    /usr/local/lib/mh
  1281. + mail    /usr/spool/mail
  1282. + mailgroup    off
  1283. + mandir    /usr/man
  1284. + manuals    local
  1285. + chown    /etc/chown
  1286. + editor    prompter
  1287. + remove    mv -f
  1288. + mts    mmdf2/smtp
  1289. + bboards    nntp
  1290. + bbdelivery off
  1291. + mf    off
  1292. + pop    on
  1293. + options    BIND
  1294. + options    BSD42 
  1295. + options    BSD43 
  1296. + options    DBM
  1297. + options    LOCKF
  1298. + options    MHE
  1299. + options    MHRC 
  1300. + options    NFS
  1301. + options    POP2
  1302. + options    RPATHS
  1303. + options    RPOP
  1304. + options    SUN40 
  1305. + options    SUNVIBUG
  1306. + options    TYPESIG=void
  1307. + options    WHATNOW
  1308. + options UCI
  1309. + #options    ZONEINFO
  1310. + ldoptions -s
  1311. + ldoptlibs -ldbm
  1312. + curses -lcurses -ltermcap
  1313. + ranlib  on
  1314. + sharedlib on
  1315. + slibdir    /usr/local/lib
  1316. *** ../mh-6.7-dist/conf/makefiles/doc    Fri Dec 14 13:24:08 1990
  1317. --- conf/makefiles/doc    Fri Jan 25 15:49:13 1991
  1318. ***************
  1319. *** 4,6 ****
  1320.   #    @(MHWARNING)
  1321. ! # @(#)$Id: doc,v 2.10 90/04/08 15:06:00 sources Exp $
  1322.   ##############################################################################
  1323. --- 4,6 ----
  1324.   #    @(MHWARNING)
  1325. ! # @(#)$Id: doc,v 2.12 91/01/25 15:49:10 mh Exp $
  1326.   ##############################################################################
  1327. ***************
  1328. *** 60,65 ****
  1329.   MAN5    =    mh-alias.$(EXT5) mh-format.$(EXT5) mh-mail.$(EXT5) \
  1330. !         mh-profile.$(EXT5)
  1331. ! man5    =    mh-alias mh-format mh-mail mh-profile
  1332. ! inst-man5=    inst-mh-alias inst-mh-format inst-mh-mail inst-mh-profile
  1333. ! Tman5    =    mh-alias.man mh-format.man mh-mail.man mh-profile.man
  1334.   
  1335. --- 60,67 ----
  1336.   MAN5    =    mh-alias.$(EXT5) mh-format.$(EXT5) mh-mail.$(EXT5) \
  1337. !         mh-profile.$(EXT5) mh-sequence.$(EXT5)
  1338. ! man5    =    mh-alias mh-format mh-mail mh-profile mh-sequence
  1339. ! inst-man5=    inst-mh-alias inst-mh-format inst-mh-mail inst-mh-profile \
  1340. !         inst-mh-sequence
  1341. ! Tman5    =    mh-alias.man mh-format.man mh-mail.man mh-profile.man \
  1342. !         mh-sequence.man
  1343.   
  1344. ***************
  1345. *** 66,73 ****
  1346.   MAN8    =    ap.$(EXT8) conflict.$(EXT8) dp.$(EXT8) install-mh.$(EXT8) \
  1347. !         post.$(EXT8) mh-tailor.$(EXT8)
  1348. ! man8    =    ap conflict dp install-mh post mh-tailor
  1349.   inst-man8=    inst-ap inst-conflict inst-dp inst-install-mh inst-post \
  1350. !         inst-mh-tailor
  1351.   Tman8    =    ap.man conflict.man dp.man install-mh.man post.man \
  1352. !         mh-tailor.man
  1353.   
  1354. --- 68,75 ----
  1355.   MAN8    =    ap.$(EXT8) conflict.$(EXT8) dp.$(EXT8) install-mh.$(EXT8) \
  1356. !         post.$(EXT8) mh-tailor.$(EXT8) fmtdump.$(EXT8)
  1357. ! man8    =    ap conflict dp install-mh post mh-tailor fmtdump
  1358.   inst-man8=    inst-ap inst-conflict inst-dp inst-install-mh inst-post \
  1359. !         inst-mh-tailor inst-fmtdump
  1360.   Tman8    =    ap.man conflict.man dp.man install-mh.man post.man \
  1361. !         mh-tailor.man fmtdump.man
  1362.   
  1363. ***************
  1364. *** 278,279 ****
  1365. --- 280,290 ----
  1366.   
  1367. + inst-fmtdump:    $(MANDIR)/$(DIR8)/fmtdump.$(EXT8)
  1368. + $(MANDIR)/$(DIR8)/fmtdump.$(EXT8):    fmtdump.man
  1369. +         -$(REMOVE) $@ zfmtdump.man
  1370. +         cp fmtdump.man $@
  1371. +         -@chmod $(MANPROT) $@
  1372. +         -@ls -l $@
  1373. +         -@echo ""
  1374.   inst-forw:    $(MANDIR)/$(DIR1)/forw.$(EXT1)
  1375. ***************
  1376. *** 368,369 ****
  1377. --- 379,389 ----
  1378.   
  1379. + inst-mh-sequence:    $(MANDIR)/$(DIR5)/mh-sequence.$(EXT5)
  1380. + $(MANDIR)/$(DIR5)/mh-sequence.$(EXT5):    mh-sequence.man
  1381. +         -$(REMOVE) $@ zmh-sequence.man
  1382. +         cp mh-sequence.man $@
  1383. +         -@chmod $(MANPROT) $@
  1384. +         -@ls -l $@
  1385. +         -@echo ""
  1386.   inst-mhook:    $(MANDIR)/$(DIR1)/mhook.$(EXT1)
  1387. ***************
  1388. *** 621,622 ****
  1389. --- 641,643 ----
  1390.   dp:        dp.man
  1391. + fmtdump:    fmtdump.man
  1392.   folder:        folder.man
  1393. ***************
  1394. *** 631,632 ****
  1395. --- 652,654 ----
  1396.   mh-profile:    mh-profile.man
  1397. + mh-sequence:    mh-sequence.man
  1398.   mh-tailor:    mh-tailor.man
  1399. ***************
  1400. *** 665,667 ****
  1401.           whatnow.me whom.me mh-alias.me mh-format.me mh-mail.me \
  1402. !         mh-profile.me ap.me conflict.me dp.me install-mh.me post.me \
  1403.   @BEGIN: TMA
  1404. --- 687,690 ----
  1405.           whatnow.me whom.me mh-alias.me mh-format.me mh-mail.me \
  1406. !         mh-profile.me mh-sequence.me \
  1407. !         ap.me conflict.me dp.me install-mh.me fmtdump.me post.me \
  1408.   @BEGIN: TMA
  1409. *** ../mh-6.7-dist/conf/makefiles/support/bboards    Fri Dec 14 13:24:09 1990
  1410. --- conf/makefiles/support/bboards    Tue Dec 18 13:34:39 1990
  1411. ***************
  1412. *** 4,6 ****
  1413.   #    @(MHWARNING)
  1414. ! # @(#)$Id: bboards,v 2.7 90/04/05 15:16:08 sources Exp $
  1415.   ##############################################################################
  1416. --- 4,6 ----
  1417.   #    @(MHWARNING)
  1418. ! # @(#)$Id: bboards,v 2.9 90/12/18 13:34:38 mh Exp $
  1419.   ##############################################################################
  1420. ***************
  1421. *** 28,29 ****
  1422. --- 28,35 ----
  1423.   CC      =    @(MHCOMPILER)
  1424. + @BEGIN: STDLIB
  1425. + LD    =    @(MHCOMPILER)
  1426. + @END: STDLIB
  1427. + @BEGIN: SHAREDLIB
  1428. + LD    =    LD_LIBRARY_PATH=../../sbr @(MHCOMPILER)
  1429. + @END: SHAREDLIB
  1430.   @BEGIN: OPTIM
  1431. ***************
  1432. *** 45,47 ****
  1433.   LDLIBS2    =    $(LIBES2) $(LDOPTLIB)
  1434. ! LDLIBS2    =    ../../config/config.o -Bdynamic -L../../sbr -lmh \
  1435.           $(LIBES1) $(LDOPTLIB)
  1436. --- 51,53 ----
  1437.   LDLIBS2    =    $(LIBES2) $(LDOPTLIB)
  1438. ! LDLIBS2    =    ../../config/config.o -Bdynamic @(SLDFLAG) -lmh \
  1439.           $(LIBES1) $(LDOPTLIB)
  1440. ***************
  1441. *** 120,122 ****
  1442.   xbbaka:        bbaka.o $(LIBES1)
  1443. !         $(CC) $(LDFLAGS) -o $@ bbaka.o $(LDLIBS1)
  1444.   
  1445. --- 126,128 ----
  1446.   xbbaka:        bbaka.o $(LIBES1)
  1447. !         $(LD) $(LDFLAGS) -o $@ bbaka.o $(LDLIBS1)
  1448.   
  1449. ***************
  1450. *** 141,143 ****
  1451.   xbbexp:        bbexp.o ../../uip/dropsbr.o $(LIBES2)
  1452. !         $(CC) $(LDFLAGS) -o $@ bbexp.o ../../uip/dropsbr.o $(LDLIBS2)
  1453.   
  1454. --- 147,149 ----
  1455.   xbbexp:        bbexp.o ../../uip/dropsbr.o $(LIBES2)
  1456. !         $(LD) $(LDFLAGS) -o $@ bbexp.o ../../uip/dropsbr.o $(LDLIBS2)
  1457.   
  1458. ***************
  1459. *** 162,164 ****
  1460.   xbbtar:        bbtar.o $(LIBES1)
  1461. !         $(CC) $(LDFLAGS) -o $@ bbtar.o $(LDLIBS1)
  1462.   
  1463. --- 168,170 ----
  1464.   xbbtar:        bbtar.o $(LIBES1)
  1465. !         $(LD) $(LDFLAGS) -o $@ bbtar.o $(LDLIBS1)
  1466.   
  1467. *** ../mh-6.7-dist/conf/makefiles/support/pop    Fri Dec 14 13:24:09 1990
  1468. --- conf/makefiles/support/pop    Tue Dec 18 13:34:38 1990
  1469. ***************
  1470. *** 4,6 ****
  1471.   #    @(MHWARNING)
  1472. ! # @(#)$Id: pop,v 2.7 90/11/05 16:06:03 mh Exp $
  1473.   ##############################################################################
  1474. --- 4,6 ----
  1475.   #    @(MHWARNING)
  1476. ! # @(#)$Id: pop,v 2.9 90/12/18 13:34:33 mh Exp $
  1477.   ##############################################################################
  1478. ***************
  1479. *** 26,27 ****
  1480. --- 26,33 ----
  1481.   CC      =    @(MHCOMPILER)
  1482. + @BEGIN: STDLIB
  1483. + LD    =    @(MHCOMPILER)
  1484. + @END: STDLIB
  1485. + @BEGIN: SHAREDLIB
  1486. + LD    =    LD_LIBRARY_PATH=../../sbr @(MHCOMPILER)
  1487. + @END: SHAREDLIB
  1488.   @BEGIN: OPTIM
  1489. ***************
  1490. *** 43,45 ****
  1491.   LDLIBS2    =    ../../config/config.o ../../config/version.o \
  1492. !         -Bdynamic -L../../sbr -lmh $(LIBES1) $(LDOPTLIB)
  1493.   @END: SHAREDLIB
  1494. --- 49,51 ----
  1495.   LDLIBS2    =    ../../config/config.o ../../config/version.o \
  1496. !         -Bdynamic @(SLDFLAG) -lmh $(LIBES1) $(LDOPTLIB)
  1497.   @END: SHAREDLIB
  1498. ***************
  1499. *** 95,97 ****
  1500.               ../../uip/dropsbr.o $(LIBES2)
  1501. !         $(CC) $(LDFLAGS) -o $@ popd.o popser.o syslog.o \
  1502.               ../../uip/dropsbr.o $(LDLIBS2)
  1503. --- 101,103 ----
  1504.               ../../uip/dropsbr.o $(LIBES2)
  1505. !         $(LD) $(LDFLAGS) -o $@ popd.o popser.o syslog.o \
  1506.               ../../uip/dropsbr.o $(LDLIBS2)
  1507. ***************
  1508. *** 118,120 ****
  1509.   xpopaka:    popaka.o $(LIBES1)
  1510. !         $(CC) $(LDFLAGS) -o $@ popaka.o $(LDLIBS1)
  1511.   
  1512. --- 124,126 ----
  1513.   xpopaka:    popaka.o $(LIBES1)
  1514. !         $(LD) $(LDFLAGS) -o $@ popaka.o $(LDLIBS1)
  1515.   
  1516. ***************
  1517. *** 142,144 ****
  1518.   xpopwrd:    popwrd.o $(LIBES1)
  1519. !         $(CC) $(LDFLAGS) -o $@ popwrd.o $(LDLIBS1)
  1520.   
  1521. --- 148,150 ----
  1522.   xpopwrd:    popwrd.o $(LIBES1)
  1523. !         $(LD) $(LDFLAGS) -o $@ popwrd.o $(LDLIBS1)
  1524.   
  1525. ***************
  1526. *** 172,174 ****
  1527.   xsmtpd:        smtpd.o syslog.o
  1528. !         $(CC) $(LDFLAGS) -o $@ smtpd.o syslog.o
  1529.   
  1530. --- 178,180 ----
  1531.   xsmtpd:        smtpd.o syslog.o
  1532. !         $(LD) $(LDFLAGS) -o $@ smtpd.o syslog.o
  1533.   
  1534. *** ../mh-6.7-dist/conf/makefiles/uip    Fri Dec 14 13:24:10 1990
  1535. --- conf/makefiles/uip    Fri Jan 25 15:50:23 1991
  1536. ***************
  1537. *** 4,6 ****
  1538.   #    @(MHWARNING)
  1539. ! # @(#)$Id: uip,v 2.9 90/04/05 15:17:01 sources Exp $
  1540.   ##############################################################################
  1541. --- 4,6 ----
  1542.   #    @(MHWARNING)
  1543. ! # @(#)$Id: uip,v 2.12 91/01/25 15:50:18 mh Exp $
  1544.   ##############################################################################
  1545. ***************
  1546. *** 103,104 ****
  1547. --- 103,110 ----
  1548.   CC    =    @(MHCOMPILER)
  1549. + @BEGIN: STDLIB
  1550. + LD    =    @(MHCOMPILER)
  1551. + @END: STDLIB
  1552. + @BEGIN: SHAREDLIB
  1553. + LD    =    LD_LIBRARY_PATH=../sbr @(MHCOMPILER)
  1554. + @END: SHAREDLIB
  1555.   @BEGIN: OPTIM
  1556. ***************
  1557. *** 118,120 ****
  1558.           ../zotnet/libzot.a
  1559. ! LDLIBES    =    ../config/config.o -Bdynamic -L../sbr -lmh \
  1560.           ../mts/libmts.a  ../zotnet/libzot.a
  1561. --- 124,126 ----
  1562.           ../zotnet/libzot.a
  1563. ! LDLIBES    =    ../config/config.o -Bdynamic @(SLDFLAG) -lmh \
  1564.           ../mts/libmts.a  ../zotnet/libzot.a
  1565. ***************
  1566. *** 133,135 ****
  1567.   MISC    =    ap conflict dp install-mh mhl post rcvdist rcvpack rcvstore \
  1568. !         rcvtty \
  1569.   @BEGIN: SENDMTS
  1570. --- 139,141 ----
  1571.   MISC    =    ap conflict dp install-mh mhl post rcvdist rcvpack rcvstore \
  1572. !         rcvtty fmtdump \
  1573.   @BEGIN: SENDMTS
  1574. ***************
  1575. *** 147,149 ****
  1576.           inst-post inst-rcvdist inst-rcvpack inst-rcvstore inst-rcvtty \
  1577. !         $(IMTSMISC) \
  1578.   @BEGIN: SENDMTS
  1579. --- 153,155 ----
  1580.           inst-post inst-rcvdist inst-rcvpack inst-rcvstore inst-rcvtty \
  1581. !         inst-fmtdump $(IMTSMISC) \
  1582.   @BEGIN: SENDMTS
  1583. ***************
  1584. *** 158,160 ****
  1585.   LMISC    =    l-ap l-conflict l-dp l-install-mh l-mhl l-post l-rcvdist \
  1586. !         l-rcvpack l-rcvstore l-rcvtty $(LMTSMISC) $(LBBMISC) \
  1587.   @BEGIN: SENDMTS
  1588. --- 164,167 ----
  1589.   LMISC    =    l-ap l-conflict l-dp l-install-mh l-mhl l-post l-rcvdist \
  1590. !         l-rcvpack l-rcvstore l-rcvtty l-fmtdump \
  1591. !         $(LMTSMISC) $(LBBMISC) \
  1592.   @BEGIN: SENDMTS
  1593. ***************
  1594. *** 169,171 ****
  1595.   TMISC    =    xap xconflict xdp xinstall-mh xmhl xpost xrcvdist xrcvpack \
  1596. !         xrcvstore xrcvtty $(TMTSMISC) $(TBBMISC) $(TPOPMISC) \
  1597.           $(TSMTSMISC) \
  1598. --- 176,179 ----
  1599.   TMISC    =    xap xconflict xdp xinstall-mh xmhl xpost xrcvdist xrcvpack \
  1600. !         xrcvstore xrcvtty xfmtdump \
  1601. !         $(TMTSMISC) $(TBBMISC) $(TPOPMISC) \
  1602.           $(TSMTSMISC) \
  1603. ***************
  1604. *** 217,219 ****
  1605.   xali:        ali.o aliasbr.o $(LIBES)
  1606. !         $(CC) $(LDFLAGS) -o $@ ali.o aliasbr.o $(LDLIBS)
  1607.   
  1608. --- 225,227 ----
  1609.   xali:        ali.o aliasbr.o $(LIBES)
  1610. !         $(LD) $(LDFLAGS) -o $@ ali.o aliasbr.o $(LDLIBS)
  1611.   
  1612. ***************
  1613. *** 237,239 ****
  1614.   xanno:        anno.o annosbr.o $(LIBES)
  1615. !         $(CC) $(LDFLAGS) -o $@ anno.o annosbr.o $(LDLIBS)
  1616.   
  1617. --- 245,247 ----
  1618.   xanno:        anno.o annosbr.o $(LIBES)
  1619. !         $(LD) $(LDFLAGS) -o $@ anno.o annosbr.o $(LDLIBS)
  1620.   
  1621. ***************
  1622. *** 254,256 ****
  1623.   xap:        ap.o trmsbr.o $(LIBES)
  1624. !         $(CC) $(LDFLAGS) -o $@ ap.o trmsbr.o $(LDLIBS) $(LDCURSES)
  1625.   
  1626. --- 262,264 ----
  1627.   xap:        ap.o trmsbr.o $(LIBES)
  1628. !         $(LD) $(LDFLAGS) -o $@ ap.o trmsbr.o $(LDLIBS) $(LDCURSES)
  1629.   
  1630. ***************
  1631. *** 278,280 ****
  1632.   xbbc:        bbc.o $(PSHLIB) $(LIBES) 
  1633. !         $(CC) $(LDFLAGS) -o $@ bbc.o $(PSHLIB) $(LDLIBS)
  1634.   
  1635. --- 286,288 ----
  1636.   xbbc:        bbc.o $(PSHLIB) $(LIBES) 
  1637. !         $(LD) $(LDFLAGS) -o $@ bbc.o $(PSHLIB) $(LDLIBS)
  1638.   
  1639. ***************
  1640. *** 298,300 ****
  1641.   xbbl:        bbl.o $(LIBES)
  1642. !         $(CC) $(LDFLAGS) -o $@ bbl.o $(LDLIBS)
  1643.   
  1644. --- 306,308 ----
  1645.   xbbl:        bbl.o $(LIBES)
  1646. !         $(LD) $(LDFLAGS) -o $@ bbl.o $(LDLIBS)
  1647.   
  1648. ***************
  1649. *** 315,317 ****
  1650.   xburst:        burst.o $(LIBES)
  1651. !         $(CC) $(LDFLAGS) -o $@ burst.o $(LDLIBS)
  1652.   
  1653. --- 323,325 ----
  1654.   xburst:        burst.o $(LIBES)
  1655. !         $(LD) $(LDFLAGS) -o $@ burst.o $(LDLIBS)
  1656.   
  1657. ***************
  1658. *** 332,334 ****
  1659.   xcipher:    cipher.o $(TMALIB) $(LIBES)
  1660. !         $(CC) $(LDFLAGS) -o $@ cipher.o $(TMALIB) $(LDLIBS)
  1661.   
  1662. --- 340,342 ----
  1663.   xcipher:    cipher.o $(TMALIB) $(LIBES)
  1664. !         $(LD) $(LDFLAGS) -o $@ cipher.o $(TMALIB) $(LDLIBS)
  1665.   
  1666. ***************
  1667. *** 350,352 ****
  1668.               whatnowsbr.o sendsbr.o annosbr.o distsbr.o $(LIBES) 
  1669. !         $(CC) $(LDFLAGS) -o $@ comp.o \
  1670.               whatnowsbr.o sendsbr.o annosbr.o distsbr.o $(LDLIBS) 
  1671. --- 358,360 ----
  1672.               whatnowsbr.o sendsbr.o annosbr.o distsbr.o $(LIBES) 
  1673. !         $(LD) $(LDFLAGS) -o $@ comp.o \
  1674.               whatnowsbr.o sendsbr.o annosbr.o distsbr.o $(LDLIBS) 
  1675. ***************
  1676. *** 369,371 ****
  1677.   xconflict:    conflict.o aliasbr.o $(LIBES)
  1678. !         $(CC) $(LDFLAGS) -o $@ conflict.o aliasbr.o $(LDLIBS)
  1679.   
  1680. --- 377,379 ----
  1681.   xconflict:    conflict.o aliasbr.o $(LIBES)
  1682. !         $(LD) $(LDFLAGS) -o $@ conflict.o aliasbr.o $(LDLIBS)
  1683.   
  1684. ***************
  1685. *** 386,388 ****
  1686.   xdecipher:    decipher.o $(TMALIB) $(LIBES)
  1687. !         $(CC) $(LDFLAGS) -o $@ decipher.o $(TMALIB) $(LDLIBS)
  1688.   
  1689. --- 394,396 ----
  1690.   xdecipher:    decipher.o $(TMALIB) $(LIBES)
  1691. !         $(LD) $(LDFLAGS) -o $@ decipher.o $(TMALIB) $(LDLIBS)
  1692.   
  1693. ***************
  1694. *** 404,406 ****
  1695.               whatnowsbr.o sendsbr.o annosbr.o distsbr.o $(LIBES) 
  1696. !         $(CC) $(LDFLAGS) -o $@ dist.o \
  1697.               whatnowsbr.o sendsbr.o annosbr.o distsbr.o $(LDLIBS) 
  1698. --- 412,414 ----
  1699.               whatnowsbr.o sendsbr.o annosbr.o distsbr.o $(LIBES) 
  1700. !         $(LD) $(LDFLAGS) -o $@ dist.o \
  1701.               whatnowsbr.o sendsbr.o annosbr.o distsbr.o $(LDLIBS) 
  1702. ***************
  1703. *** 423,425 ****
  1704.   xdp:        dp.o trmsbr.o $(LIBES) 
  1705. !         $(CC) $(LDFLAGS) -o $@ dp.o trmsbr.o $(LDLIBS) $(LDCURSES)
  1706.   
  1707. --- 431,433 ----
  1708.   xdp:        dp.o trmsbr.o $(LIBES) 
  1709. !         $(LD) $(LDFLAGS) -o $@ dp.o trmsbr.o $(LDLIBS) $(LDCURSES)
  1710.   
  1711. ***************
  1712. *** 428,429 ****
  1713. --- 436,454 ----
  1714.   
  1715. + inst-fmtdump:    $(ETCDIR)/fmtdump
  1716. + $(ETCDIR)/fmtdump:    xfmtdump
  1717. +         -$(REMOVE) $@ zfmtdump
  1718. +         cp xfmtdump $@
  1719. +         -@chmod $(PGMPROT) $@
  1720. +         -@ls -l $@
  1721. +         -@echo ""
  1722. + fmtdump:        xfmtdump
  1723. + xfmtdump:        fmtdump.o trmsbr.o $(LIBES)
  1724. +         $(LD) $(LDFLAGS) -o $@ fmtdump.o $(LDLIBS) $(LDCURSES)
  1725. + l-fmtdump:;        $(LINT) $(LFLAGS) fmtdump.c $(LLIBS) 
  1726.   inst-folders:    inst-folder
  1727. ***************
  1728. *** 444,446 ****
  1729.   xfolder:    folder.o $(LIBES) 
  1730. !         $(CC) $(LDFLAGS) -o $@ folder.o $(LDLIBS) 
  1731.   
  1732. --- 469,471 ----
  1733.   xfolder:    folder.o $(LIBES) 
  1734. !         $(LD) $(LDFLAGS) -o $@ folder.o $(LDLIBS) 
  1735.   
  1736. ***************
  1737. *** 462,464 ****
  1738.               whatnowsbr.o sendsbr.o annosbr.o distsbr.o $(LIBES) 
  1739. !         $(CC) $(LDFLAGS) -o $@ forw.o \
  1740.               whatnowsbr.o sendsbr.o annosbr.o distsbr.o $(LDLIBS) 
  1741. --- 487,489 ----
  1742.               whatnowsbr.o sendsbr.o annosbr.o distsbr.o $(LIBES) 
  1743. !         $(LD) $(LDFLAGS) -o $@ forw.o \
  1744.               whatnowsbr.o sendsbr.o annosbr.o distsbr.o $(LDLIBS) 
  1745. ***************
  1746. *** 493,495 ****
  1747.               dropsbr.o trmsbr.o $(POPLIB) $(TMALIB) $(LIBES)
  1748. !         $(CC) $(LDFLAGS) -o $@ inc.o scansbr.o \
  1749.               dropsbr.o trmsbr.o $(POPLIB) $(TMALIB) $(LDLIBS) \
  1750. --- 518,520 ----
  1751.               dropsbr.o trmsbr.o $(POPLIB) $(TMALIB) $(LIBES)
  1752. !         $(LD) $(LDFLAGS) -o $@ inc.o scansbr.o \
  1753.               dropsbr.o trmsbr.o $(POPLIB) $(TMALIB) $(LDLIBS) \
  1754. ***************
  1755. *** 513,515 ****
  1756.   xinstall-mh:    install-mh.o $(LIBES) 
  1757. !         $(CC) $(LDFLAGS) -o $@ install-mh.o $(LDLIBS) 
  1758.   
  1759. --- 538,540 ----
  1760.   xinstall-mh:    install-mh.o $(LIBES) 
  1761. !         $(LD) $(LDFLAGS) -o $@ install-mh.o $(LDLIBS) 
  1762.   
  1763. ***************
  1764. *** 530,532 ****
  1765.   xkdsc:        kdsc.o $(KDSLIB) $(LIBES)
  1766. !         $(CC) $(LDFLAGS) -o $@ kdsc.o $(KDSLIB) $(LDLIBS)
  1767.   
  1768. --- 555,557 ----
  1769.   xkdsc:        kdsc.o $(KDSLIB) $(LIBES)
  1770. !         $(LD) $(LDFLAGS) -o $@ kdsc.o $(KDSLIB) $(LDLIBS)
  1771.   
  1772. ***************
  1773. *** 547,549 ****
  1774.   xmark:        mark.o $(LIBES) 
  1775. !         $(CC) $(LDFLAGS) -o $@ mark.o $(LDLIBS) 
  1776.   
  1777. --- 572,574 ----
  1778.   xmark:        mark.o $(LIBES) 
  1779. !         $(LD) $(LDFLAGS) -o $@ mark.o $(LDLIBS) 
  1780.   
  1781. ***************
  1782. *** 565,567 ****
  1783.               mhlsbr.o trmsbr.o $(LIBES) 
  1784. !         $(CC) $(LDFLAGS) -o $@ mhl.o \
  1785.               mhlsbr.o trmsbr.o $(LDLIBS) $(LDCURSES)
  1786. --- 590,592 ----
  1787.               mhlsbr.o trmsbr.o $(LIBES) 
  1788. !         $(LD) $(LDFLAGS) -o $@ mhl.o \
  1789.               mhlsbr.o trmsbr.o $(LDLIBS) $(LDCURSES)
  1790. ***************
  1791. *** 584,586 ****
  1792.   xmhmail:      mhmail.o $(LIBES) 
  1793. !         $(CC) $(LDFLAGS) -o $@ mhmail.o $(LDLIBS)
  1794.   
  1795. --- 609,611 ----
  1796.   xmhmail:      mhmail.o $(LIBES) 
  1797. !         $(LD) $(LDFLAGS) -o $@ mhmail.o $(LDLIBS)
  1798.   
  1799. ***************
  1800. *** 601,603 ****
  1801.   xmhpath:    mhpath.o $(LIBES) 
  1802. !         $(CC) $(LDFLAGS) -o $@ mhpath.o $(LDLIBS)
  1803.   
  1804. --- 626,628 ----
  1805.   xmhpath:    mhpath.o $(LIBES) 
  1806. !         $(LD) $(LDFLAGS) -o $@ mhpath.o $(LDLIBS)
  1807.   
  1808. ***************
  1809. *** 625,627 ****
  1810.   xmsgchk:    msgchk.o $(POPLIB) $(LIBES)
  1811. !         $(CC) $(LDFLAGS) -o $@ msgchk.o $(POPLIB) $(LDLIBS)
  1812.   
  1813. --- 650,652 ----
  1814.   xmsgchk:    msgchk.o $(POPLIB) $(LIBES)
  1815. !         $(LD) $(LDFLAGS) -o $@ msgchk.o $(POPLIB) $(LDLIBS)
  1816.   
  1817. ***************
  1818. *** 644,646 ****
  1819.               $(PSHLIB) $(LIBES)
  1820. !         $(CC) $(LDFLAGS) -o $@ msh.o mshcmds.o vmhsbr.o \
  1821.               picksbr.o scansbr.o dropsbr.o mhlsbr.o trmsbr.o \
  1822. --- 669,671 ----
  1823.               $(PSHLIB) $(LIBES)
  1824. !         $(LD) $(LDFLAGS) -o $@ msh.o mshcmds.o vmhsbr.o \
  1825.               picksbr.o scansbr.o dropsbr.o mhlsbr.o trmsbr.o \
  1826. ***************
  1827. *** 665,667 ****
  1828.   xpackf:        packf.o dropsbr.o $(LIBES)
  1829. !         $(CC) $(LDFLAGS) -o $@ packf.o dropsbr.o $(LDLIBS)
  1830.   
  1831. --- 690,692 ----
  1832.   xpackf:        packf.o dropsbr.o $(LIBES)
  1833. !         $(LD) $(LDFLAGS) -o $@ packf.o dropsbr.o $(LDLIBS)
  1834.   
  1835. ***************
  1836. *** 682,684 ****
  1837.   xpick:       pick.o picksbr.o $(LIBES)
  1838. !         $(CC) $(LDFLAGS) -o $@ pick.o picksbr.o $(LDLIBS)
  1839.   
  1840. --- 707,709 ----
  1841.   xpick:       pick.o picksbr.o $(LIBES)
  1842. !         $(LD) $(LDFLAGS) -o $@ pick.o picksbr.o $(LDLIBS)
  1843.   
  1844. ***************
  1845. *** 707,709 ****
  1846.               aliasbr.o $(MTSBRS) $(TMALIB) $(LIBES)
  1847. !         $(CC) $(LDFLAGS) -o $@ post.o \
  1848.               aliasbr.o $(MTSBRS) $(TMALIB) $(LDLIBS)
  1849. --- 732,734 ----
  1850.               aliasbr.o $(MTSBRS) $(TMALIB) $(LIBES)
  1851. !         $(LD) $(LDFLAGS) -o $@ post.o \
  1852.               aliasbr.o $(MTSBRS) $(TMALIB) $(LDLIBS)
  1853. ***************
  1854. *** 726,728 ****
  1855.   xprompter:    prompter.o $(LIBES) 
  1856. !         $(CC) $(LDFLAGS) -o $@ prompter.o $(LDLIBS)
  1857.   
  1858. --- 751,753 ----
  1859.   xprompter:    prompter.o $(LIBES) 
  1860. !         $(LD) $(LDFLAGS) -o $@ prompter.o $(LDLIBS)
  1861.   
  1862. ***************
  1863. *** 743,745 ****
  1864.   xrcvdist:    rcvdist.o distsbr.o $(LIBES)
  1865. !         $(CC) $(LDFLAGS) -o $@ rcvdist.o distsbr.o $(LDLIBS)
  1866.   
  1867. --- 768,770 ----
  1868.   xrcvdist:    rcvdist.o distsbr.o $(LIBES)
  1869. !         $(LD) $(LDFLAGS) -o $@ rcvdist.o distsbr.o $(LDLIBS)
  1870.   
  1871. ***************
  1872. *** 760,762 ****
  1873.   xrcvpack:    rcvpack.o dropsbr.o $(LIBES)
  1874. !         $(CC) $(LDFLAGS) -o $@ rcvpack.o dropsbr.o $(LDLIBS)
  1875.   
  1876. --- 785,787 ----
  1877.   xrcvpack:    rcvpack.o dropsbr.o $(LIBES)
  1878. !         $(LD) $(LDFLAGS) -o $@ rcvpack.o dropsbr.o $(LDLIBS)
  1879.   
  1880. ***************
  1881. *** 777,779 ****
  1882.   xrcvstore:    rcvstore.o $(LIBES)
  1883. !         $(CC) $(LDFLAGS) -o $@ rcvstore.o $(LDLIBS)
  1884.   
  1885. --- 802,804 ----
  1886.   xrcvstore:    rcvstore.o $(LIBES)
  1887. !         $(LD) $(LDFLAGS) -o $@ rcvstore.o $(LDLIBS)
  1888.   
  1889. ***************
  1890. *** 799,801 ****
  1891.               scansbr.o trmsbr.o ttyw.o $(LIBES)
  1892. !         $(CC) $(LDFLAGS) -o $@ rcvtty.o \
  1893.               scansbr.o trmsbr.o ttyw.o $(LDLIBS) $(LDCURSES)
  1894. --- 824,826 ----
  1895.               scansbr.o trmsbr.o ttyw.o $(LIBES)
  1896. !         $(LD) $(LDFLAGS) -o $@ rcvtty.o \
  1897.               scansbr.o trmsbr.o ttyw.o $(LDLIBS) $(LDCURSES)
  1898. ***************
  1899. *** 818,820 ****
  1900.   xrefile:      refile.o $(LIBES) 
  1901. !         $(CC) $(LDFLAGS) -o $@ refile.o $(LDLIBS) 
  1902.   
  1903. --- 843,845 ----
  1904.   xrefile:      refile.o $(LIBES) 
  1905. !         $(LD) $(LDFLAGS) -o $@ refile.o $(LDLIBS) 
  1906.   
  1907. ***************
  1908. *** 836,838 ****
  1909.               whatnowsbr.o sendsbr.o annosbr.o distsbr.o $(LIBES)
  1910. !         $(CC) $(LDFLAGS) -o $@ repl.o replsbr.o \
  1911.               whatnowsbr.o sendsbr.o annosbr.o distsbr.o $(LDLIBS)
  1912. --- 861,863 ----
  1913.               whatnowsbr.o sendsbr.o annosbr.o distsbr.o $(LIBES)
  1914. !         $(LD) $(LDFLAGS) -o $@ repl.o replsbr.o \
  1915.               whatnowsbr.o sendsbr.o annosbr.o distsbr.o $(LDLIBS)
  1916. ***************
  1917. *** 858,860 ****
  1918.   xrmail:       rmail.o $(LIBES)
  1919. !         $(CC) $(LDFLAGS) -o $@ rmail.o $(LDLIBS)
  1920.   
  1921. --- 883,885 ----
  1922.   xrmail:       rmail.o $(LIBES)
  1923. !         $(LD) $(LDFLAGS) -o $@ rmail.o $(LDLIBS)
  1924.   
  1925. ***************
  1926. *** 875,877 ****
  1927.   xrmf:       rmf.o $(LIBES) 
  1928. !         $(CC) $(LDFLAGS) -o $@ rmf.o $(LDLIBS)
  1929.   
  1930. --- 900,902 ----
  1931.   xrmf:       rmf.o $(LIBES) 
  1932. !         $(LD) $(LDFLAGS) -o $@ rmf.o $(LDLIBS)
  1933.   
  1934. ***************
  1935. *** 892,894 ****
  1936.   xrmm:       rmm.o $(LIBES) 
  1937. !         $(CC) $(LDFLAGS) -o $@ rmm.o $(LDLIBS)
  1938.   
  1939. --- 917,919 ----
  1940.   xrmm:       rmm.o $(LIBES) 
  1941. !         $(LD) $(LDFLAGS) -o $@ rmm.o $(LDLIBS)
  1942.   
  1943. ***************
  1944. *** 910,912 ****
  1945.               scansbr.o trmsbr.o $(LIBES)
  1946. !         $(CC) $(LDFLAGS) -o $@ scan.o \
  1947.               scansbr.o trmsbr.o $(LDLIBS) $(LDCURSES)
  1948. --- 935,937 ----
  1949.               scansbr.o trmsbr.o $(LIBES)
  1950. !         $(LD) $(LDFLAGS) -o $@ scan.o \
  1951.               scansbr.o trmsbr.o $(LDLIBS) $(LDCURSES)
  1952. ***************
  1953. *** 930,932 ****
  1954.               sendsbr.o annosbr.o distsbr.o $(LIBES) 
  1955. !         $(CC) $(LDFLAGS) -o $@ send.o \
  1956.               sendsbr.o annosbr.o distsbr.o $(LDLIBS)
  1957. --- 955,957 ----
  1958.               sendsbr.o annosbr.o distsbr.o $(LIBES) 
  1959. !         $(LD) $(LDFLAGS) -o $@ send.o \
  1960.               sendsbr.o annosbr.o distsbr.o $(LDLIBS)
  1961. ***************
  1962. *** 958,960 ****
  1963.               mhlsbr.o trmsbr.o $(LIBES) 
  1964. !         $(CC) $(LDFLAGS) -o $@ show.o \
  1965.               mhlsbr.o trmsbr.o $(LDLIBS) $(LDCURSES)
  1966. --- 983,985 ----
  1967.               mhlsbr.o trmsbr.o $(LIBES) 
  1968. !         $(LD) $(LDFLAGS) -o $@ show.o \
  1969.               mhlsbr.o trmsbr.o $(LDLIBS) $(LDCURSES)
  1970. ***************
  1971. *** 984,986 ****
  1972.   xsbboards:    sbboards.o dropsbr.o $(LIBES)
  1973. !         $(CC) $(LDFLAGS) -o $@ sbboards.o dropsbr.o $(LDLIBS)
  1974.   
  1975. --- 1009,1011 ----
  1976.   xsbboards:    sbboards.o dropsbr.o $(LIBES)
  1977. !         $(LD) $(LDFLAGS) -o $@ sbboards.o dropsbr.o $(LDLIBS)
  1978.   
  1979. ***************
  1980. *** 1001,1003 ****
  1981.   xslocal:    slocal.o aliasbr.o dropsbr.o $(LIBES)
  1982. !         $(CC) $(LDFLAGS) -o $@ slocal.o aliasbr.o dropsbr.o $(LDLIBS)
  1983.   
  1984. --- 1026,1028 ----
  1985.   xslocal:    slocal.o aliasbr.o dropsbr.o $(LIBES)
  1986. !         $(LD) $(LDFLAGS) -o $@ slocal.o aliasbr.o dropsbr.o $(LDLIBS)
  1987.   
  1988. ***************
  1989. *** 1018,1020 ****
  1990.   xsortm:       sortm.o $(LIBES) 
  1991. !         $(CC) $(LDFLAGS) -o $@ sortm.o $(LDLIBS)
  1992.   
  1993. --- 1043,1045 ----
  1994.   xsortm:       sortm.o $(LIBES) 
  1995. !         $(LD) $(LDFLAGS) -o $@ sortm.o $(LDLIBS)
  1996.   
  1997. ***************
  1998. *** 1038,1040 ****
  1999.   xspop:        spop.o dropsbr.o $(LIBES)
  2000. !         $(CC) $(LDFLAGS) -o $@ spop.o dropsbr.o $(LDLIBS)
  2001.   
  2002. --- 1063,1065 ----
  2003.   xspop:        spop.o dropsbr.o $(LIBES)
  2004. !         $(LD) $(LDFLAGS) -o $@ spop.o dropsbr.o $(LDLIBS)
  2005.   
  2006. ***************
  2007. *** 1059,1061 ****
  2008.   xspost:       spost.o aliasbr.o $(LIBES)
  2009. !         $(CC) $(LDFLAGS) -o $@ spost.o aliasbr.o $(LDLIBS)
  2010.   
  2011. --- 1084,1086 ----
  2012.   xspost:       spost.o aliasbr.o $(LIBES)
  2013. !         $(LD) $(LDFLAGS) -o $@ spost.o aliasbr.o $(LDLIBS)
  2014.   
  2015. ***************
  2016. *** 1077,1079 ****
  2017.   xtma:        tma.o $(TMALIB) $(LIBES)
  2018. !         $(CC) $(LDFLAGS) -o $@ tma.o $(TMALIB) $(LDLIBS)
  2019.   
  2020. --- 1102,1104 ----
  2021.   xtma:        tma.o $(TMALIB) $(LIBES)
  2022. !         $(LD) $(LDFLAGS) -o $@ tma.o $(TMALIB) $(LDLIBS)
  2023.   
  2024. ***************
  2025. *** 1094,1096 ****
  2026.   xumhook:       umhook.o $(LIBES) 
  2027. !         $(CC) $(LDFLAGS) -o $@ umhook.o  $(LDLIBS) $(LDCURSES)
  2028.   
  2029. --- 1119,1121 ----
  2030.   xumhook:       umhook.o $(LIBES) 
  2031. !         $(LD) $(LDFLAGS) -o $@ umhook.o  $(LDLIBS) $(LDCURSES)
  2032.   
  2033. ***************
  2034. *** 1111,1113 ****
  2035.   xvmh:       vmh.o vmhsbr.o $(LIBES) 
  2036. !         $(CC) $(LDFLAGS) -o $@ vmh.o vmhsbr.o $(LDLIBS) $(LDCURSES)
  2037.   
  2038. --- 1136,1138 ----
  2039.   xvmh:       vmh.o vmhsbr.o $(LIBES) 
  2040. !         $(LD) $(LDFLAGS) -o $@ vmh.o vmhsbr.o $(LDLIBS) $(LDCURSES)
  2041.   
  2042. ***************
  2043. *** 1117,1119 ****
  2044.   xvmhtest:    vmhtest.o vmhsbr.o $(LIBES)
  2045. !         $(CC) $(LDFLAGS) -o $@ vmhtest.o vmhsbr.o $(LDLIBS)
  2046.       
  2047. --- 1142,1144 ----
  2048.   xvmhtest:    vmhtest.o vmhsbr.o $(LIBES)
  2049. !         $(LD) $(LDFLAGS) -o $@ vmhtest.o vmhsbr.o $(LDLIBS)
  2050.       
  2051. ***************
  2052. *** 1133,1135 ****
  2053.               whatnowsbr.o sendsbr.o annosbr.o distsbr.o $(LIBES)
  2054. !         $(CC) $(LDFLAGS) -o $@ whatnow.o \
  2055.               whatnowsbr.o sendsbr.o annosbr.o distsbr.o $(LDLIBS)
  2056. --- 1158,1160 ----
  2057.               whatnowsbr.o sendsbr.o annosbr.o distsbr.o $(LIBES)
  2058. !         $(LD) $(LDFLAGS) -o $@ whatnow.o \
  2059.               whatnowsbr.o sendsbr.o annosbr.o distsbr.o $(LDLIBS)
  2060. ***************
  2061. *** 1152,1154 ****
  2062.   xwhom:        whom.o distsbr.o $(LIBES)
  2063. !         $(CC) $(LDFLAGS) -o $@ whom.o distsbr.o $(LDLIBS)
  2064.   
  2065. --- 1177,1179 ----
  2066.   xwhom:        whom.o distsbr.o $(LIBES)
  2067. !         $(LD) $(LDFLAGS) -o $@ whom.o distsbr.o $(LDLIBS)
  2068.   
  2069. ***************
  2070. *** 1216,1218 ****
  2071.   #    xpickle:    pickle.o $(LIBES)
  2072. ! #            $(CC) $(LDFLAGS) -o $@ pickle.o $(LDLIBS)
  2073.   #
  2074. --- 1241,1243 ----
  2075.   #    xpickle:    pickle.o $(LIBES)
  2076. ! #            $(LD) $(LDFLAGS) -o $@ pickle.o $(LDLIBS)
  2077.   #
  2078. ***************
  2079. *** 1392,1393 ****
  2080. --- 1417,1423 ----
  2081.   #forw.o: /usr/include/sys/stat.h
  2082. + fmtdump.o: fmtdump.c
  2083. + fmtdump.o: ../h/mh.h
  2084. + fmtdump.o: ../h/formatsbr.h
  2085. + fmtdump.o: ../h/fmtcompile.h
  2086. + #fmtdump.o: /usr/include/stdio.h
  2087.   inc.o: inc.c
  2088. *** ../mh-6.7-dist/conf/mh-gen.8    Fri Dec 14 13:24:11 1990
  2089. --- conf/mh-gen.8    Thu Jan 24 08:28:05 1991
  2090. ***************
  2091. *** 1,2 ****
  2092. ! .\" @(#)$Id: mh-gen.8,v 2.50 90/11/21 09:27:52 mh Exp Locker: mh $
  2093.   .\" uneven inter-word spacing (nroff line adjusting) hampers readability
  2094. --- 1,2 ----
  2095. ! .\" @(#)$Id: mh-gen.8,v 2.54 91/01/24 08:27:50 mh Exp $
  2096.   .\" uneven inter-word spacing (nroff line adjusting) hampers readability
  2097. ***************
  2098. *** 425,426 ****
  2099. --- 425,433 ----
  2100.   .ti -.5i
  2101. + LOCKF
  2102. + .br
  2103. + Directs \fIMH\fP to use the \fBlockf()\fP system call for UNIX-style
  2104. + locking instead of \fBflock()\fP.  If you're using NFS to read or
  2105. + write maildrops, you should enable this option.
  2106. + .ti -.5i
  2107.   locname
  2108. ***************
  2109. *** 578,579 ****
  2110. --- 585,600 ----
  2111.   .ti -.5i
  2112. + SUNVIBUG
  2113. + .br
  2114. + This option causes
  2115. + \fIMH\fP to return to the \*(lqWhat now?\*(rq
  2116. + prompt if your initial editor is \fBvi\fP
  2117. + and it exits with non-zero status.
  2118. + Use on Sun OS 4.1 and other systems where the
  2119. + \fB/usr/ucb/vi\fP editor was changed to
  2120. + exit with its status equal to the number of pseudo-\*(lqerrors\*(rq
  2121. + encountered during the edit.  This causes a problem for programs that
  2122. + test the exit status of their editor and abort if the status is non-zero.
  2123. + (This includes \fIMH\fP and programs like \fB/usr/etc/vipw\fP).
  2124. + .ti -.5i
  2125.   SYS5
  2126. ***************
  2127. *** 723,736 ****
  2128.   .br
  2129. ! The directory where the MH shared library should go.
  2130. ! You'll need to manually run \fIldconfig\fP\0(8) whenever a new
  2131. ! shared object is installed on the system.
  2132.   
  2133. ! If you want to
  2134. ! put it somewhere other than \fB/usr/lib\fP or \fB/usr/local/lib\fP
  2135. ! (not advisable), you'll probably have to run \fIldconfig\fR\0(8) on
  2136. ! that directory, or
  2137. ! alter the environment variable \fBLD_LIBRARY_PATH\fP for each
  2138. ! user wishing to use the MH system (this is messy). See
  2139. ! \fIld\fR\0(1) for more information about how to do this.
  2140.   
  2141.   .ti -.5i
  2142. --- 744,755 ----
  2143.   .br
  2144. ! The directory where the \fIMH\fP shared library should go.
  2145.   
  2146. ! Since some \fIMH\fP programs are setuid, they'll only look for
  2147. ! the library in \*(lqtrusted\*(rq locations.  Putting the library
  2148. ! somewhere besides \fB/usr/lib\fP or \fB/usr/local/lib\fP is not advisable.
  2149.   
  2150. + You may need to run \fIldconfig\fP\0(8) manually whenever a new
  2151. + shared object is installed on the system.
  2152. + See \fIld\fR\0(1) for more information about using shared libraries.
  2153.   .ti -.5i
  2154. ***************
  2155. *** 777,780 ****
  2156.   .PP
  2157. ! Now install the configured files into the source areas.  (On SYSTEM 5
  2158. ! systems you may need to use \*(lqmake sys5\*(rq to compile mhconfig.)
  2159.   .sp 1
  2160. --- 796,801 ----
  2161.   .PP
  2162. ! Now install the configured files into the source areas.  (On SYS5
  2163. ! systems, or other systems where you get complaints about
  2164. ! \*(lq_index\*(rq and \*(lq_rindex\*(rq being undefined,
  2165. ! you should use \*(lqmake sys5\*(rq to compile mhconfig.)
  2166.   .sp 1
  2167. *** ../mh-6.7-dist/conf/mhconfig.c    Fri Dec 14 13:24:11 1990
  2168. --- conf/mhconfig.c    Fri Jan 25 14:48:48 1991
  2169. ***************
  2170. *** 1,17 ****
  2171.   /* mhconfig.c - configure MH */
  2172.   /* cc [-DSYS5] mhconfig.c -o mhconfig */
  2173.   #ifndef    lint
  2174. ! static char ident[] = "@(#)$Id: mhconfig.c,v 2.26 90/11/05 16:24:55 mh Exp $";
  2175.   #endif    lint
  2176.   
  2177.   #include <ctype.h>
  2178.   #include <stdio.h>
  2179.   #ifdef    SYS5
  2180.   #define    index    strchr
  2181.   #define    rindex    strrchr
  2182.   #endif    SYS5
  2183.   
  2184.   extern    char *strcpy(), *malloc(), *index(), *rindex();
  2185.   #ifdef    notdef
  2186.   extern    char *sprintf();    /* rely on stdio.h to declare this */
  2187. --- 1,21 ----
  2188.   /* mhconfig.c - configure MH */
  2189.   /* cc [-DSYS5] mhconfig.c -o mhconfig */
  2190.   #ifndef    lint
  2191. ! static char ident[] = "@(#)$Id: mhconfig.c,v 2.30 91/01/25 14:48:44 mh Exp $";
  2192.   #endif    lint
  2193.   
  2194.   #include <ctype.h>
  2195.   #include <stdio.h>
  2196. ! #ifdef    hpux
  2197. ! #define    SYS5
  2198. ! #endif
  2199.   #ifdef    SYS5
  2200.   #define    index    strchr
  2201.   #define    rindex    strrchr
  2202.   #endif    SYS5
  2203.   
  2204. + static void insopt(), mkopts();
  2205.   extern    char *strcpy(), *malloc(), *index(), *rindex();
  2206.   #ifdef    notdef
  2207.   extern    char *sprintf();    /* rely on stdio.h to declare this */
  2208. ***************
  2209. *** 368,377 ****
  2210.       fprintf (fp, "/^@BEGIN: RANLIB$/,/^@END: RANLIB$/d\n");
  2211.       }
  2212.   
  2213. !     if (strcmp (sharedlib, "on") == 0) {
  2214.       fprintf (fp, "/^@BEGIN: SHAREDLIB$/d\n/^@END: SHAREDLIB$/d\n");
  2215.       fprintf (fp, "/^@BEGIN: STDLIB$/,/^@END: STDLIB$/d\n");
  2216.       fprintf (fp, "s%%@(SLIBDIR)%%%s%%g\n",slibdir);
  2217.       }
  2218.       else {
  2219.       fprintf (fp, "/^@BEGIN: STDLIB$/d\n/^@END: STDLIB$/d\n");
  2220. --- 372,385 ----
  2221.       fprintf (fp, "/^@BEGIN: RANLIB$/,/^@END: RANLIB$/d\n");
  2222.       }
  2223.   
  2224. !     if (strcmp (sharedlib, "on") == 0 || strcmp (sharedlib, "secure") == 0) {
  2225.       fprintf (fp, "/^@BEGIN: SHAREDLIB$/d\n/^@END: SHAREDLIB$/d\n");
  2226.       fprintf (fp, "/^@BEGIN: STDLIB$/,/^@END: STDLIB$/d\n");
  2227.       fprintf (fp, "s%%@(SLIBDIR)%%%s%%g\n",slibdir);
  2228. +     if (strcmp (sharedlib, "secure") == 0)
  2229. +         fprintf (fp, "s%%@(SLDFLAG)%%-L%s%%g\n",slibdir);
  2230. +     else
  2231. +         fprintf (fp, "s%%@(SLDFLAG)%%%%g\n");
  2232.       }
  2233.       else {
  2234.       fprintf (fp, "/^@BEGIN: STDLIB$/d\n/^@END: STDLIB$/d\n");
  2235. ***************
  2236. *** 683,691 ****
  2237.       add_option ("SPRINTFTYPE=int");
  2238.       }
  2239.   
  2240. !     if (strcmp (sharedlib, "on") && strcmp (sharedlib, "off"))
  2241. !     adios (NULLCP, "sharedlib should be either \"on\" or \"off\", not %s",
  2242. !         sharedlib);
  2243.   
  2244.       if (strcmp (tma, "on") && strcmp (tma, "off"))
  2245.       adios (NULLCP, "tma should be either \"on\" or \"off\", not %s", tma);
  2246. --- 691,701 ----
  2247.       add_option ("SPRINTFTYPE=int");
  2248.       }
  2249.   
  2250. !     if (strcmp (sharedlib, "on") && strcmp (sharedlib, "off")
  2251. !         && strcmp (sharedlib, "secure"))
  2252. !     adios (NULLCP,
  2253. !         "sharedlib should be either \"on\", \"off\", or \"secure\", not %s",
  2254. !         sharedlib);
  2255.   
  2256.       if (strcmp (tma, "on") && strcmp (tma, "off"))
  2257.       adios (NULLCP, "tma should be either \"on\" or \"off\", not %s", tma);
  2258. ***************
  2259. *** 770,776 ****
  2260.       *bp++ = *s++;
  2261.       }
  2262.       (void) strcpy (bp, "\", ");
  2263. !     myopts = stradd (buffer, myopts);
  2264.   }
  2265.   
  2266.   
  2267. --- 780,786 ----
  2268.       *bp++ = *s++;
  2269.       }
  2270.       (void) strcpy (bp, "\", ");
  2271. !     insopt (buffer);
  2272.   }
  2273.   
  2274.   
  2275. ***************
  2276. *** 777,783 ****
  2277.   end_myopt () {
  2278.       printf ("\n");
  2279.       (void) fflush (stdout);
  2280.       myopts = stradd ("NULL};", myopts);
  2281.   }
  2282.   
  2283. --- 787,793 ----
  2284.   end_myopt () {
  2285.       printf ("\n");
  2286.       (void) fflush (stdout);
  2287. !     mkopts();
  2288.       myopts = stradd ("NULL};", myopts);
  2289.   }
  2290.   
  2291. ***************
  2292. *** 898,901 ****
  2293. --- 908,955 ----
  2294.       (void) fputc ('\n', stderr);
  2295.   
  2296.       exit (1);
  2297. + }
  2298. + /* quick and dirty ordering of options for readability */
  2299. + struct opt {
  2300. +     char *s;
  2301. +     struct opt *n;
  2302. + };
  2303. + static struct opt *optp = (struct opt *)NULL;
  2304. + static void
  2305. + insopt(s)
  2306. + char *s;    /* string for sorting */
  2307. + {
  2308. +     struct opt  *p,
  2309. +         *np,
  2310. +         *lp = (struct opt *)NULL;
  2311. +     if ((np = (struct opt *) malloc ((unsigned) sizeof (struct opt))) == 
  2312. +         (struct opt *)NULL)
  2313. +     adios (NULL, "unable to malloc opt");
  2314. +     np -> s = strdup(s);
  2315. +     np -> n = (struct opt *)NULL;
  2316. +     for (p = optp; p; lp = p, p = p -> n) {
  2317. +     if (strcmp (p->s, s) > 0)
  2318. +         break;
  2319. +     }
  2320. +     if (p)
  2321. +     np -> n = p;
  2322. +     if (lp)
  2323. +     lp -> n = np;
  2324. +     else
  2325. +     optp = np;
  2326. + }
  2327. + static void
  2328. + mkopts()
  2329. + {
  2330. +     struct opt *p;
  2331. +     for (p = optp; p; p = p -> n)
  2332. +     myopts = stradd (p->s, myopts);
  2333.   }
  2334. *** ../mh-6.7-dist/h/fmtcompile.h    Fri Dec 14 13:24:15 1990
  2335. --- h/fmtcompile.h    Thu Dec 27 17:04:19 1990
  2336. ***************
  2337. *** 1,4 ****
  2338. ! /* @(#)$Id: fmtcompile.h,v 1.4 90/04/05 15:06:42 sources Exp $ */
  2339.   
  2340.   /* Format Types */
  2341.   /* -------------*/
  2342. --- 1,4 ----
  2343. ! /* @(#)$Id: fmtcompile.h,v 1.5 90/12/27 17:04:12 mh Exp $ */
  2344.   
  2345.   /* Format Types */
  2346.   /* -------------*/
  2347. ***************
  2348. *** 58,102 ****
  2349.   #define FT_LS_PATH    48    /* set "str" to route part of addr */
  2350.   #define FT_LS_GNAME    49    /* set "str" to group part of addr */
  2351.   #define FT_LS_NOTE    50    /* set "str" to comment part of addr */
  2352. ! #define FT_LS_822ADDR    51    /* set "str" to 822 format addr */
  2353. ! #define FT_LS_FRIENDLY    52    /* set "str" to "friendly" format addr */
  2354. ! #define FT_LV_HOSTTYPE    53    /* set "value" to addr host type */
  2355. ! #define FT_LV_INGRPF    54    /* set "value" to addr in-group flag */
  2356. ! #define FT_LV_NOHOSTF    55    /* set "value" to addr no-host flag */
  2357.   
  2358.   /* Date Coercion */
  2359. ! #define FT_LOCALDATE    56    /* Coerce date to local timezone */
  2360. ! #define FT_GMTDATE    57    /* Coerce date to gmt */
  2361.   
  2362.   /* pre-format processing */
  2363. ! #define FT_PARSEDATE    58    /* parse comp into a date (tws) struct */
  2364. ! #define FT_PARSEADDR    59    /* parse comp into a mailaddr struct */
  2365. ! #define FT_FORMATADDR    60    /* let external routine format addr */
  2366. ! #define FT_MYMBOX    61    /* do "mymbox" test on comp */
  2367.   
  2368.   /* misc. */
  2369.   #ifdef    VAN
  2370. ! #define FT_ADDTOSEQ    62    /* add current msg to a sequence */
  2371.   #endif
  2372.   
  2373.   /* conditionals & control flow (must be last) */
  2374. ! #define FT_SAVESTR    63    /* save current str reg */
  2375. ! #define FT_DONE        64    /* stop formatting */
  2376. ! #define FT_NOP        65    /* nop */
  2377. ! #define FT_GOTO        66    /* (relative) goto */
  2378. ! #define FT_IF_S_NULL    67    /* test if "str" null */
  2379. ! #define FT_IF_S        68    /* test if "str" non-null */
  2380. ! #define FT_IF_V_EQ    69    /* test if "value" = literal */
  2381. ! #define FT_IF_V_NE    70    /* test if "value" != literal */
  2382. ! #define FT_IF_V_GT    71    /* test if "value" > literal */
  2383. ! #define FT_IF_MATCH    72    /* test if "str" contains literal */
  2384. ! #define FT_IF_AMATCH    73    /* test if "str" starts with literal */
  2385. ! #define FT_S_NULL    74    /* V = 1 if "str" null */
  2386. ! #define FT_S_NONNULL    75    /* V = 1 if "str" non-null */
  2387. ! #define FT_V_EQ        76    /* V = 1 if "value" = literal */
  2388. ! #define FT_V_NE        77    /* V = 1 if "value" != literal */
  2389. ! #define FT_V_GT        78    /* V = 1 if "value" > literal */
  2390. ! #define FT_V_MATCH    79    /* V = 1 if "str" contains literal */
  2391. ! #define FT_V_AMATCH    80    /* V = 1 if "str" starts with literal */
  2392.   
  2393.   #define IF_FUNCS FT_S_NULL    /* start of "if" functions */
  2394. --- 58,103 ----
  2395.   #define FT_LS_PATH    48    /* set "str" to route part of addr */
  2396.   #define FT_LS_GNAME    49    /* set "str" to group part of addr */
  2397.   #define FT_LS_NOTE    50    /* set "str" to comment part of addr */
  2398. ! #define    FT_LS_ADDR    51    /* set "str" to mbox@host */
  2399. ! #define FT_LS_822ADDR    52    /* set "str" to 822 format addr */
  2400. ! #define FT_LS_FRIENDLY    53    /* set "str" to "friendly" format addr */
  2401. ! #define FT_LV_HOSTTYPE    54    /* set "value" to addr host type */
  2402. ! #define FT_LV_INGRPF    55    /* set "value" to addr in-group flag */
  2403. ! #define FT_LV_NOHOSTF    56    /* set "value" to addr no-host flag */
  2404.   
  2405.   /* Date Coercion */
  2406. ! #define FT_LOCALDATE    57    /* Coerce date to local timezone */
  2407. ! #define FT_GMTDATE    58    /* Coerce date to gmt */
  2408.   
  2409.   /* pre-format processing */
  2410. ! #define FT_PARSEDATE    59    /* parse comp into a date (tws) struct */
  2411. ! #define FT_PARSEADDR    60    /* parse comp into a mailaddr struct */
  2412. ! #define FT_FORMATADDR    61    /* let external routine format addr */
  2413. ! #define FT_MYMBOX    62    /* do "mymbox" test on comp */
  2414.   
  2415.   /* misc. */
  2416.   #ifdef    VAN
  2417. ! #define FT_ADDTOSEQ    63    /* add current msg to a sequence */
  2418.   #endif
  2419.   
  2420.   /* conditionals & control flow (must be last) */
  2421. ! #define FT_SAVESTR    64    /* save current str reg */
  2422. ! #define FT_DONE        65    /* stop formatting */
  2423. ! #define FT_NOP        66    /* nop */
  2424. ! #define FT_GOTO        67    /* (relative) goto */
  2425. ! #define FT_IF_S_NULL    68    /* test if "str" null */
  2426. ! #define FT_IF_S        69    /* test if "str" non-null */
  2427. ! #define FT_IF_V_EQ    70    /* test if "value" = literal */
  2428. ! #define FT_IF_V_NE    71    /* test if "value" != literal */
  2429. ! #define FT_IF_V_GT    72    /* test if "value" > literal */
  2430. ! #define FT_IF_MATCH    73    /* test if "str" contains literal */
  2431. ! #define FT_IF_AMATCH    74    /* test if "str" starts with literal */
  2432. ! #define FT_S_NULL    75    /* V = 1 if "str" null */
  2433. ! #define FT_S_NONNULL    76    /* V = 1 if "str" non-null */
  2434. ! #define FT_V_EQ        77    /* V = 1 if "value" = literal */
  2435. ! #define FT_V_NE        78    /* V = 1 if "value" != literal */
  2436. ! #define FT_V_GT        79    /* V = 1 if "value" > literal */
  2437. ! #define FT_V_MATCH    80    /* V = 1 if "str" contains literal */
  2438. ! #define FT_V_AMATCH    81    /* V = 1 if "str" starts with literal */
  2439.   
  2440.   #define IF_FUNCS FT_S_NULL    /* start of "if" functions */
  2441. *** ../mh-6.7-dist/sbr/fmtcompile.c    Fri Dec 14 13:25:34 1990
  2442. --- sbr/fmtcompile.c    Thu Jan 10 08:35:44 1991
  2443. ***************
  2444. *** 1,4 ****
  2445. --- 1,7 ----
  2446.   /* fmtcompile.c - "compile" format strings for fmtscan */
  2447. + #ifndef    lint
  2448. + static char ident[] = "@(#)$Id: fmtcompile.c,v 1.9 91/01/10 08:35:40 mh Exp $";
  2449. + #endif    lint
  2450.   
  2451.   #include "../h/mh.h"
  2452.   #include "../h/addrsbr.h"
  2453. ***************
  2454. *** 108,113 ****
  2455. --- 111,117 ----
  2456.       "path",    TF_COMP,    FT_LS_PATH,    FT_PARSEADDR,    TFL_PUTS,
  2457.       "gname",    TF_COMP,    FT_LS_GNAME,    FT_PARSEADDR,    TFL_PUTS,
  2458.       "note",    TF_COMP,    FT_LS_NOTE,    FT_PARSEADDR,    TFL_PUTS,
  2459. +     "addr",    TF_COMP,    FT_LS_ADDR,    FT_PARSEADDR,    TFL_PUTS,
  2460.       "proper",    TF_COMP,    FT_LS_822ADDR,    FT_PARSEADDR,    TFL_PUTS,
  2461.       "type",    TF_COMP,    FT_LV_HOSTTYPE,    FT_PARSEADDR,    TFL_PUTN,
  2462.       "ingrp",    TF_COMP,    FT_LV_INGRPF,    FT_PARSEADDR,    TFL_PUTN,
  2463. ***************
  2464. *** 235,241 ****
  2465.   
  2466.       cp = compile(format_string);
  2467.       if (*cp) {
  2468. !     CERROR("extra '%>' or '%|'");
  2469.       }
  2470.       NEW(FT_DONE,0,0);
  2471.       *fmt = formatvec;
  2472. --- 239,245 ----
  2473.   
  2474.       cp = compile(format_string);
  2475.       if (*cp) {
  2476. !     CERROR("extra '%>', '%|' or '%?'");
  2477.       }
  2478.       NEW(FT_DONE,0,0);
  2479.       *fmt = formatvec;
  2480. ***************
  2481. *** 275,280 ****
  2482. --- 279,285 ----
  2483.   
  2484.       case '|':
  2485.       case '>':
  2486. +     case '?':
  2487.           return (cp);
  2488.   
  2489.       case '<':
  2490. ***************
  2491. *** 512,554 ****
  2492.       register char *sp;
  2493.   {
  2494.       register char *cp = sp;
  2495. !     register struct format *fexpr, *fif, *felse;
  2496. !     register int c;
  2497.   
  2498. !     if ((c = *cp++) == '{') {
  2499. !     cp = do_name(cp, 0);
  2500. !     fp->f_type = FT_LS_COMP;
  2501. !     LV (FT_IF_S, 0);
  2502. !     }
  2503. !     else if (c == '(') {
  2504. !     cp = do_func(cp);
  2505. !     /* see if we can merge the load and the "if" */
  2506. !     if (ftbl->f_type >= IF_FUNCS)
  2507. !         fp->f_type = ftbl->extra;
  2508. !     else {
  2509. !         LV (FT_IF_V_NE, 0);
  2510.       }
  2511.       }
  2512. -     else  {
  2513. -     CERROR("'(' or '{' expected");
  2514. -     }
  2515. -     fexpr = fp;
  2516. -     cp = compile (cp);
  2517. -     if ((c = *cp++) == '|') {
  2518. -     LV(FT_GOTO, 0);
  2519. -     fif = fp;
  2520. -     felse = next_fp;
  2521. -     cp = compile(cp);
  2522. -     fif->f_skip = next_fp - fif;
  2523. -     c = *cp++;
  2524. -     }
  2525. -     else
  2526. -     felse = next_fp;
  2527.   
  2528.       if (c != '>') {
  2529.       CERROR("'>' expected.");
  2530.       }
  2531. !     fexpr->f_skip = felse - fexpr;
  2532.   
  2533.       return (cp);
  2534.   }
  2535. --- 517,580 ----
  2536.       register char *sp;
  2537.   {
  2538.       register char *cp = sp;
  2539. !     register struct format *fexpr,
  2540. !                *fif = (struct format *)NULL;
  2541. !     register int c = '<';
  2542.   
  2543. !     for (;;) {
  2544. !     if (c == '<') {            /* doing an IF */
  2545. !         if ((c = *cp++) == '{') /*}*/{
  2546. !         cp = do_name(cp, 0);
  2547. !         fp->f_type = FT_LS_COMP;
  2548. !         LV (FT_IF_S, 0);
  2549. !         }
  2550. !         else if (c == '(') {
  2551. !         cp = do_func(cp);
  2552. !         /* see if we can merge the load and the "if" */
  2553. !         if (ftbl->f_type >= IF_FUNCS)
  2554. !             fp->f_type = ftbl->extra;
  2555. !         else {
  2556. !             LV (FT_IF_V_NE, 0);
  2557. !         }
  2558. !         }
  2559. !         else {
  2560. !         CERROR("'(' or '{' expected");    /*}*/
  2561. !         }
  2562.       }
  2563. +     fexpr = fp;            /* loc of [ELS]IF */
  2564. +     cp = compile (cp);        /* compile IF TRUE stmts */
  2565. +     if (fif)
  2566. +         fif->f_skip = next_fp - fif;
  2567. +     if ((c = *cp++) == '|') {    /* the last ELSE */
  2568. +         LV(FT_GOTO, 0);
  2569. +         fif = fp;            /* loc of GOTO */
  2570. +         fexpr->f_skip = next_fp - fexpr;
  2571. +         fexpr = (struct format *)NULL;/* no extra ENDIF */
  2572. +         cp = compile (cp);        /* compile ELSE stmts */
  2573. +         fif->f_skip = next_fp - fif;
  2574. +         c = *cp++;
  2575. +     }
  2576. +     else if (c == '?') {        /* another ELSIF */
  2577. +         LV(FT_GOTO, 0);
  2578. +         fif = fp;            /* loc of GOTO */
  2579. +         fexpr->f_skip = next_fp - fexpr;
  2580. +         c = '<';            /* impersonate an IF */
  2581. +         continue;
  2582. +     }
  2583. +     break;
  2584.       }
  2585.   
  2586.       if (c != '>') {
  2587.       CERROR("'>' expected.");
  2588.       }
  2589. !     if (fexpr)                /* IF ... [ELSIF ...] ENDIF */
  2590. !     fexpr->f_skip = next_fp - fexpr;
  2591.   
  2592.       return (cp);
  2593.   }
  2594. *** ../mh-6.7-dist/sbr/formatsbr.c    Fri Dec 14 13:25:34 1990
  2595. --- sbr/formatsbr.c    Wed Jan  9 22:35:25 1991
  2596. ***************
  2597. *** 1,4 ****
  2598. --- 1,7 ----
  2599.   /* formatsbr.c - format string interpretation */
  2600. + #ifndef    lint
  2601. + static char ident[] = "@(#)$Id: formatsbr.c,v 1.12 91/01/09 22:34:45 mh Exp $";
  2602. + #endif    lint
  2603.   
  2604.   #include "../h/mh.h"
  2605.   #include "../h/addrsbr.h"
  2606. ***************
  2607. *** 398,412 ****
  2608.               ljust = 0;
  2609.               if ((i = fmt->f_width) < 0) {
  2610.                   i = -i;
  2611. !                 ljust++;    /* XXX should do something with this */
  2612.               }
  2613.   
  2614. !             if (i > 0 && strlen(str) > i)
  2615.                   str[i] = '\0';
  2616.               xp = str;
  2617.               xp += strlen(str) - 1;
  2618.               while (xp > str && isspace(*xp))
  2619.                   *xp-- = '\0';
  2620.           }
  2621.           break;
  2622.   
  2623. --- 401,417 ----
  2624.               ljust = 0;
  2625.               if ((i = fmt->f_width) < 0) {
  2626.                   i = -i;
  2627. !                 ljust++;
  2628.               }
  2629.   
  2630. !             if (!ljust && i > 0 && strlen(str) > i)
  2631.                   str[i] = '\0';
  2632.               xp = str;
  2633.               xp += strlen(str) - 1;
  2634.               while (xp > str && isspace(*xp))
  2635.                   *xp-- = '\0';
  2636. +             if (ljust && i > 0 && strlen(str) > i)
  2637. +             str += strlen(str) - i;
  2638.           }
  2639.           break;
  2640.   
  2641. ***************
  2642. *** 558,563 ****
  2643. --- 563,569 ----
  2644.       case FT_LV_NOHOSTF:
  2645.           value = fmt->f_comp->c_mn->m_nohost;
  2646.           break;
  2647. +     case FT_LS_ADDR:
  2648.       case FT_LS_FRIENDLY:
  2649.   #ifdef BERK
  2650.           str = fmt->f_comp->c_mn->m_mbox;
  2651. ***************
  2652. *** 566,571 ****
  2653. --- 572,579 ----
  2654.           str = fmt -> f_comp -> c_text;
  2655.           break;
  2656.           }
  2657. +         if (fmt -> f_type == FT_LS_ADDR)
  2658. +         goto unfriendly;
  2659.           if ((str = mn -> m_pers) == NULL)
  2660.               if ((str = mn -> m_note)) {
  2661.                   (void) strcpy (buffer, str);
  2662. ***************
  2663. *** 581,588 ****
  2664.                           else
  2665.                           break;
  2666.                   }
  2667. !             } else
  2668. !         switch (mn -> m_type) {
  2669.               case LOCALHOST:
  2670.               str = mn -> m_mbox;
  2671.               break;
  2672. --- 589,597 ----
  2673.                           else
  2674.                           break;
  2675.                   }
  2676. !             } else {
  2677. !     unfriendly: ;
  2678. !           switch (mn -> m_type) {
  2679.               case LOCALHOST:
  2680.               str = mn -> m_mbox;
  2681.               break;
  2682. ***************
  2683. *** 600,605 ****
  2684. --- 609,615 ----
  2685.               else
  2686.                   str = mn -> m_text;
  2687.               break;
  2688. +           }
  2689.           }
  2690.   #endif BERK
  2691.           break;
  2692. *** ../mh-6.7-dist/sbr/m_convert.c    Fri Dec 14 13:25:36 1990
  2693. --- sbr/m_convert.c    Wed Jan  9 11:19:38 1991
  2694. ***************
  2695. *** 1,14 ****
  2696.   /* m_convert.c - parse a message sequence and set SELECTED */
  2697.   
  2698.   #include "../h/mh.h"
  2699.   #include <stdio.h>
  2700.   #include <ctype.h>
  2701.   
  2702. - #define    BADLST    (-1)
  2703.   #define    BADMSG    (-2)
  2704.   #define    BADRNG    (-3)
  2705.   #define    BADNEW    (-4)
  2706.   #define    BADNUM    (-5)
  2707.   
  2708.   #define    FIRST    1
  2709.   #define    LAST    2
  2710. --- 1,17 ----
  2711.   /* m_convert.c - parse a message sequence and set SELECTED */
  2712. + #ifndef    lint
  2713. + static char ident[] = "@(#)$Id: m_convert.c,v 1.6 91/01/09 11:19:24 mh Exp $";
  2714. + #endif    lint
  2715.   
  2716.   #include "../h/mh.h"
  2717.   #include <stdio.h>
  2718.   #include <ctype.h>
  2719.   
  2720.   #define    BADMSG    (-2)
  2721.   #define    BADRNG    (-3)
  2722.   #define    BADNEW    (-4)
  2723.   #define    BADNUM    (-5)
  2724. + #define    BADLST    (-6)
  2725.   
  2726.   #define    FIRST    1
  2727.   #define    LAST    2
  2728. ***************
  2729. *** 42,47 ****
  2730. --- 45,52 ----
  2731.           break;
  2732.   
  2733.       default: 
  2734. +         if (err < 0)
  2735. +         goto badmsg;
  2736.           return 1;
  2737.       }
  2738.   
  2739. ***************
  2740. *** 254,262 ****
  2741.   register struct msgs *mp;
  2742.   register char   *cp;
  2743.   {
  2744.       int     bits,
  2745.               found,
  2746. !             inverted;
  2747.       register int    i,
  2748.                       j;
  2749.       register char  *dp;
  2750. --- 259,270 ----
  2751.   register struct msgs *mp;
  2752.   register char   *cp;
  2753.   {
  2754. +     char   *bp = (char *)NULL;
  2755.       int     bits,
  2756.               found,
  2757. !             inverted,
  2758. !             range = 0,        /* no range */
  2759. !         first = 0;
  2760.       register int    i,
  2761.                       j;
  2762.       register char  *dp;
  2763. ***************
  2764. *** 267,281 ****
  2765.       if (inverted = (dp = m_find (nsequence)) && *dp && ssequal (dp, cp))
  2766.       cp += strlen (dp);
  2767.   
  2768.       bits = FFATTRSLOT;
  2769.       for (i = 0; mp -> msgattrs[i]; i++)
  2770.       if (strcmp (mp -> msgattrs[i], cp) == 0)
  2771.           break;
  2772.       if (mp -> msgattrs[i] == NULL)
  2773.       return OK;
  2774.   
  2775.       found = 0;
  2776. !     for (j = mp -> lowmsg; j <= mp -> hghmsg; j++)
  2777.       if ((mp -> msgstats[j] & EXISTS)
  2778.           && inverted ? !(mp -> msgstats[j] & (1 << (bits + i)))
  2779.           : mp -> msgstats[j] & (1 << (bits + i))) {
  2780. --- 275,340 ----
  2781.       if (inverted = (dp = m_find (nsequence)) && *dp && ssequal (dp, cp))
  2782.       cp += strlen (dp);
  2783.   
  2784. +     convdir = 1;
  2785. +     for (dp = cp; *dp && isalnum(*dp); dp++)
  2786. +     continue;
  2787. +     if (*dp == ':') {
  2788. +     bp = dp++;
  2789. +     range = 1;
  2790. +     if (isalpha (*dp)) {    /* optimize? */
  2791. +         if (strcmp (dp, "prev") == 0) {
  2792. +         convdir = -1;
  2793. +         first = (mp -> curmsg > 0) && (mp -> curmsg <= mp -> hghmsg)
  2794. +             ? mp -> curmsg - 1
  2795. +             : mp -> hghmsg;
  2796. +         }
  2797. +         else if (strcmp (dp, "next") == 0) {
  2798. +         convdir = 1;
  2799. +         first = (mp -> curmsg >= mp -> lowmsg)
  2800. +                 ? mp -> curmsg + 1
  2801. +                 : mp -> lowmsg;
  2802. +         }
  2803. +         else if (strcmp (dp, "first") == 0) {
  2804. +         convdir = 1;
  2805. +         }
  2806. +         else if (strcmp (dp, "last") == 0) {
  2807. +         convdir = -1;
  2808. +         }
  2809. +         else
  2810. +         return BADLST;
  2811. +     }
  2812. +     else {            /* a numeric range */
  2813. +         if (*dp == '+')
  2814. +         dp++;
  2815. +         else if (*dp == '-') {
  2816. +         dp++;
  2817. +         convdir = -1;
  2818. +         }
  2819. +         if ((range = atoi(dp)) == 0)
  2820. +         return BADLST;
  2821. +         while (isdigit (*dp))
  2822. +         dp++;
  2823. +         if (*dp)
  2824. +         return BADLST;
  2825. +     }
  2826. +     *bp = '\0';        /* terminate sequence name */
  2827. +     }
  2828.       bits = FFATTRSLOT;
  2829.       for (i = 0; mp -> msgattrs[i]; i++)
  2830.       if (strcmp (mp -> msgattrs[i], cp) == 0)
  2831.           break;
  2832. +     if (bp)
  2833. +     *bp = ':';        /* restore sequence name */
  2834.       if (mp -> msgattrs[i] == NULL)
  2835.       return OK;
  2836.   
  2837.       found = 0;
  2838. !     for (j = first ? first : (convdir > 0) ? mp -> lowmsg : mp -> hghmsg;
  2839. !         j >= mp -> lowmsg && j <= mp -> hghmsg; j += convdir)
  2840.       if ((mp -> msgstats[j] & EXISTS)
  2841.           && inverted ? !(mp -> msgstats[j] & (1 << (bits + i)))
  2842.           : mp -> msgstats[j] & (1 << (bits + i))) {
  2843. ***************
  2844. *** 288,297 ****
  2845. --- 347,360 ----
  2846.               mp -> hghsel = j;
  2847.           }
  2848.           found++;
  2849. +         if (range && found >= range)
  2850. +         break;        /* we've done enough */
  2851.       }
  2852.       if (found > 0)
  2853.       return found;
  2854.   
  2855. +     if (first)
  2856. +     return BADMSG;
  2857.       advise (NULLCP, "sequence %s %s", cp, inverted ? "full" : "empty");
  2858.       return NOTOK;
  2859.   }
  2860. *** /dev/null    Fri Jan 25 16:03:46 1991
  2861. --- uip/fmtdump.c    Fri Jan 25 15:38:08 1991
  2862. ***************
  2863. *** 0 ****
  2864. --- 1,425 ----
  2865. + #ifndef lint
  2866. + static char ident[] = "@(#)$Id: fmtdump.c,v 1.2 91/01/25 15:38:06 mh Exp $";
  2867. + #endif
  2868. + /*
  2869. +  * fmtdump - compile format file and dump out instructions
  2870. +  *
  2871. +  * usage:
  2872. +  *
  2873. +  *    fmtdump [formatfile]
  2874. +  *
  2875. +  */
  2876. + #include "../h/mh.h"
  2877. + #include "../h/formatsbr.h"
  2878. + #include "../h/fmtcompile.h"
  2879. + #include <stdio.h>
  2880. + static struct format *lvec[128];
  2881. + static lused = 0;
  2882. + char *f_typestr(), *c_typestr();
  2883. + static int findlabel();
  2884. + void
  2885. + main(argc, argv)
  2886. +     int argc;
  2887. +     char **argv;
  2888. + {
  2889. +     int n;
  2890. +     struct format *fmt;
  2891. +     char *file = "scan.format";
  2892. +     char *str;
  2893. +     if (argc > 1)
  2894. +         file = argv[1];
  2895. +     /* Read format file into memory */
  2896. +     str = new_fs(file, 0, 0);
  2897. +     /* Compile format */
  2898. +     n = fmt_compile(str, &fmt);
  2899. +     /* Dump format */
  2900. +     dumpall(fmt);
  2901. +     exit(0);
  2902. + }
  2903. + dumpall(fmth)
  2904. +     register struct format *fmth;
  2905. + {
  2906. +     int i;
  2907. +     register struct format *fmt, *addr;
  2908. +     /* Assign labels */
  2909. +     for (fmt = fmth; fmt; ++fmt) {
  2910. +         i = fmt->f_type;
  2911. +         if (i == FT_IF_S ||
  2912. +             i == FT_IF_S_NULL ||
  2913. +             i == FT_IF_V_EQ ||
  2914. +             i == FT_IF_V_NE ||
  2915. +             i == FT_IF_V_GT ||
  2916. +             i == FT_IF_MATCH ||
  2917. +             i == FT_IF_AMATCH ||
  2918. +             i == FT_GOTO) {
  2919. +             addr = fmt + fmt->f_skip;
  2920. +             if (findlabel(addr) < 0)
  2921. +                 assignlabel(addr);
  2922. +         }
  2923. +         if (fmt->f_type == FT_DONE)
  2924. +             break;
  2925. +     }
  2926. +     /* Dump them out! */
  2927. +     for (fmt = fmth; fmt; ++fmt) {
  2928. +         dumpone(fmt);
  2929. +         if (fmt->f_type == FT_DONE)
  2930. +             break;
  2931. +     }
  2932. + }
  2933. + dumpone(fmt)
  2934. +     register struct format *fmt;
  2935. + {
  2936. +     register int i;
  2937. +     if ((i = findlabel(fmt)) >= 0)
  2938. +         printf("L%d:", i);
  2939. +     putchar('\t');
  2940. +     fputs(f_typestr((int)fmt->f_type), stdout);
  2941. +     switch (fmt->f_type) {
  2942. +     case FT_COMP:
  2943. +     case FT_LS_COMP:
  2944. +     case FT_LV_COMPFLAG:
  2945. +     case FT_LV_COMP:
  2946. +         printf(", comp ");
  2947. +         litputs(fmt->f_comp->c_name);
  2948. +         if (fmt->f_comp->c_type)
  2949. +             printf(", c_type %s", c_typestr(fmt->f_comp->c_type));
  2950. +         if (fmt->f_comp->c_flags)
  2951. +             printf(", c_flags %d", fmt->f_comp->c_flags);
  2952. +         break;
  2953. +     case FT_LV_SEC:
  2954. +     case FT_LV_MIN:
  2955. +     case FT_LV_HOUR:
  2956. +     case FT_LV_MDAY:
  2957. +     case FT_LV_MON:
  2958. +     case FT_LS_MONTH:
  2959. +     case FT_LS_LMONTH:
  2960. +     case FT_LS_ZONE:
  2961. +     case FT_LV_YEAR:
  2962. +     case FT_LV_WDAY:
  2963. +     case FT_LS_DAY:
  2964. +     case FT_LS_WEEKDAY:
  2965. +     case FT_LV_YDAY:
  2966. +     case FT_LV_ZONE:
  2967. +     case FT_LV_CLOCK:
  2968. +     case FT_LV_RCLOCK:
  2969. +     case FT_LV_DAYF:
  2970. +     case FT_LV_ZONEF:
  2971. +     case FT_LV_DST:
  2972. +     case FT_LS_822DATE:
  2973. +     case FT_LS_PRETTY:
  2974. +     case FT_LOCALDATE:
  2975. +     case FT_GMTDATE:
  2976. +     case FT_PARSEDATE:
  2977. +         printf(", c_name ");
  2978. +         litputs(fmt->f_comp->c_name);
  2979. +         if (fmt->f_comp->c_type)
  2980. +             printf(", c_type %s", c_typestr(fmt->f_comp->c_type));
  2981. +         if (fmt->f_comp->c_flags)
  2982. +             printf(", c_flags %d", fmt->f_comp->c_flags);
  2983. +         break;
  2984. +     case FT_LS_PERS:
  2985. +     case FT_LS_MBOX:
  2986. +     case FT_LS_HOST:
  2987. +     case FT_LS_PATH:
  2988. +     case FT_LS_GNAME:
  2989. +     case FT_LS_NOTE:
  2990. +     case FT_LS_822ADDR:
  2991. +     case FT_LV_HOSTTYPE:
  2992. +     case FT_LV_INGRPF:
  2993. +     case FT_LV_NOHOSTF:
  2994. +     case FT_LS_FRIENDLY:
  2995. +     case FT_PARSEADDR:
  2996. +     case FT_MYMBOX:
  2997. +         printf(", c_name ");
  2998. +         litputs(fmt->f_comp->c_name);
  2999. +         if (fmt->f_comp->c_type)
  3000. +             printf(", c_type %s", c_typestr(fmt->f_comp->c_type));
  3001. +         if (fmt->f_comp->c_flags)
  3002. +             printf(", c_flags %d", fmt->f_comp->c_flags);
  3003. +         break;
  3004. +     case FT_COMPF:
  3005. +         printf(", width %d, fill '", fmt->f_width);
  3006. +         litputc(fmt->f_fill);
  3007. +         printf("' name ");
  3008. +         litputs(fmt->f_comp->c_name);
  3009. +         if (fmt->f_comp->c_type)
  3010. +             printf(", c_type %s", c_typestr(fmt->f_comp->c_type));
  3011. +         if (fmt->f_comp->c_flags)
  3012. +             printf(", c_flags %d", fmt->f_comp->c_flags);
  3013. +         break;
  3014. +     case FT_STRF:
  3015. +     case FT_NUMF:
  3016. +         printf(", width %d, fill '", fmt->f_width);
  3017. +         litputc(fmt->f_fill);
  3018. +         putchar('\'');
  3019. +         break;
  3020. +     case FT_LIT:
  3021. + #ifdef FT_LIT_FORCE
  3022. +     case FT_LIT_FORCE:
  3023. + #endif
  3024. +         putchar(' ');
  3025. +         litputs(fmt->f_text);
  3026. +         break;
  3027. +     case FT_LITF:
  3028. +         printf(", width %d, fill '", fmt->f_width);
  3029. +         litputc(fmt->f_fill);
  3030. +         printf("' ");
  3031. +         litputs(fmt->f_text);
  3032. +         break;
  3033. +     case FT_CHAR:
  3034. +         putchar(' ');
  3035. +         putchar('\'');
  3036. +         litputc(fmt->f_char);
  3037. +         putchar('\'');
  3038. +         break;
  3039. +     case FT_IF_S:
  3040. +     case FT_IF_S_NULL:
  3041. +     case FT_IF_MATCH:
  3042. +     case FT_IF_AMATCH:
  3043. +     case FT_GOTO:
  3044. +         i = findlabel(fmt + fmt->f_skip);
  3045. +         printf(" L%d", i);
  3046. +         break;
  3047. +     case FT_IF_V_EQ:
  3048. +     case FT_IF_V_NE:
  3049. +     case FT_IF_V_GT:
  3050. +         i = findlabel(fmt + fmt->f_skip);
  3051. +         printf(" %d goto L%d", fmt->f_value, i);
  3052. +         break;
  3053. +     case FT_V_EQ:
  3054. +     case FT_V_NE:
  3055. +     case FT_V_GT:
  3056. +     case FT_LV_LIT:
  3057. +     case FT_LV_PLUS_L:
  3058. +     case FT_LV_MINUS_L:
  3059. +     case FT_LV_DIVIDE_L:
  3060. +         printf(" value %d", fmt->f_value);
  3061. +         break;
  3062. +     case FT_LS_LIT:
  3063. +         printf(" str ");
  3064. +         litputs(fmt->f_text);
  3065. +         break;
  3066. +     case FT_LS_TRIM:
  3067. +         printf(", width %d", fmt->f_width);
  3068. +         break;
  3069. +     case FT_LV_DAT:
  3070. +         printf(", value dat[%d]", fmt->f_value);
  3071. +         break;
  3072. +     }
  3073. +     putchar('\n');
  3074. + }
  3075. + static int
  3076. + findlabel(addr)
  3077. +     register struct format *addr;
  3078. + {
  3079. +     register int i;
  3080. +     for (i = 0; i < lused; ++i)
  3081. +         if (addr == lvec[i])
  3082. +             return(i);
  3083. +     return(-1);
  3084. + }
  3085. + assignlabel(addr)
  3086. +     register struct format *addr;
  3087. + {
  3088. +     lvec[lused++] = addr;
  3089. + }
  3090. + char *
  3091. + f_typestr(t)
  3092. +     int t;
  3093. + {
  3094. +     static char buf[32];
  3095. +     switch (t) {
  3096. +     case FT_COMP: return("COMP");
  3097. +     case FT_COMPF: return("COMPF");
  3098. +     case FT_LIT: return("LIT");
  3099. +     case FT_LITF: return("LITF");
  3100. + #ifdef    FT_LIT_FORCE
  3101. +     case FT_LIT_FORCE: return("LIT_FORCE");
  3102. + #endif
  3103. +     case FT_CHAR: return("CHAR");
  3104. +     case FT_NUM: return("NUM");
  3105. +     case FT_NUMF: return("NUMF");
  3106. +     case FT_STR: return("STR");
  3107. +     case FT_STRF: return("STRF");
  3108. +     case FT_STRFW: return("STRFW");
  3109. +     case FT_PUTADDR: return("PUTADDR");
  3110. +     case FT_LS_COMP: return("LS_COMP");
  3111. +     case FT_LS_LIT: return("LS_LIT");
  3112. +     case FT_LS_TRIM: return("LS_TRIM");
  3113. +     case FT_LV_COMP: return("LV_COMP");
  3114. +     case FT_LV_COMPFLAG: return("LV_COMPFLAG");
  3115. +     case FT_LV_LIT: return("LV_LIT");
  3116. +     case FT_LV_DAT: return("LV_DAT");
  3117. +     case FT_LV_STRLEN: return("LV_STRLEN");
  3118. +     case FT_LV_PLUS_L: return("LV_PLUS_L");
  3119. +     case FT_LV_MINUS_L: return("LV_MINUS_L");
  3120. +     case FT_LV_DIVIDE_L: return("LV_DIVIDE_L");
  3121. +     case FT_LV_CHAR_LEFT: return("LV_CHAR_LEFT");
  3122. +     case FT_LS_MONTH: return("LS_MONTH");
  3123. +     case FT_LS_LMONTH: return("LS_LMONTH");
  3124. +     case FT_LS_ZONE: return("LS_ZONE");
  3125. +     case FT_LS_DAY: return("LS_DAY");
  3126. +     case FT_LS_WEEKDAY: return("LS_WEEKDAY");
  3127. +     case FT_LS_822DATE: return("LS_822DATE");
  3128. +     case FT_LS_PRETTY: return("LS_PRETTY");
  3129. +     case FT_LV_SEC: return("LV_SEC");
  3130. +     case FT_LV_MIN: return("LV_MIN");
  3131. +     case FT_LV_HOUR: return("LV_HOUR");
  3132. +     case FT_LV_MDAY: return("LV_MDAY");
  3133. +     case FT_LV_MON: return("LV_MON");
  3134. +     case FT_LV_YEAR: return("LV_YEAR");
  3135. +     case FT_LV_YDAY: return("LV_YDAY");
  3136. +     case FT_LV_WDAY: return("LV_WDAY");
  3137. +     case FT_LV_ZONE: return("LV_ZONE");
  3138. +     case FT_LV_CLOCK: return("LV_CLOCK");
  3139. +     case FT_LV_RCLOCK: return("LV_RCLOCK");
  3140. +     case FT_LV_DAYF: return("LV_DAYF");
  3141. +     case FT_LV_DST: return("LV_DST");
  3142. +     case FT_LV_ZONEF: return("LV_ZONEF");
  3143. +     case FT_LS_PERS: return("LS_PERS");
  3144. +     case FT_LS_MBOX: return("LS_MBOX");
  3145. +     case FT_LS_HOST: return("LS_HOST");
  3146. +     case FT_LS_PATH: return("LS_PATH");
  3147. +     case FT_LS_GNAME: return("LS_GNAME");
  3148. +     case FT_LS_NOTE: return("LS_NOTE");
  3149. +     case FT_LS_822ADDR: return("LS_822ADDR");
  3150. +     case FT_LS_FRIENDLY: return("LS_FRIENDLY");
  3151. +     case FT_LV_HOSTTYPE: return("LV_HOSTTYPE");
  3152. +     case FT_LV_INGRPF: return("LV_INGRPF");
  3153. +     case FT_LV_NOHOSTF: return("LV_NOHOSTF");
  3154. +     case FT_LOCALDATE: return("LOCALDATE");
  3155. +     case FT_GMTDATE: return("GMTDATE");
  3156. +     case FT_PARSEDATE: return("PARSEDATE");
  3157. +     case FT_PARSEADDR: return("PARSEADDR");
  3158. +     case FT_FORMATADDR: return("FORMATADDR");
  3159. +     case FT_MYMBOX: return("MYMBOX");
  3160. + #ifdef    FT_ADDTOSEQ
  3161. +     case FT_ADDTOSEQ: return("ADDTOSEQ");
  3162. + #endif
  3163. +     case FT_SAVESTR: return("SAVESTR");
  3164. +     case FT_DONE: return("DONE");
  3165. +     case FT_NOP: return("NOP");
  3166. +     case FT_GOTO: return("GOTO");
  3167. +     case FT_IF_S_NULL: return("IF_S_NULL");
  3168. +     case FT_IF_S: return("IF_S");
  3169. +     case FT_IF_V_EQ: return("IF_V_EQ");
  3170. +     case FT_IF_V_NE: return("IF_V_NE");
  3171. +     case FT_IF_V_GT: return("IF_V_GT");
  3172. +     case FT_IF_MATCH: return("IF_MATCH");
  3173. +     case FT_IF_AMATCH: return("IF_AMATCH");
  3174. +     case FT_S_NULL: return("S_NULL");
  3175. +     case FT_S_NONNULL: return("S_NONNULL");
  3176. +     case FT_V_EQ: return("V_EQ");
  3177. +     case FT_V_NE: return("V_NE");
  3178. +     case FT_V_GT: return("V_GT");
  3179. +     case FT_V_MATCH: return("V_MATCH");
  3180. +     case FT_V_AMATCH: return("V_AMATCH");
  3181. +     default:
  3182. +         (void)sprintf(buf, "/* ??? #%d */", t);
  3183. +         return(buf);
  3184. +     }
  3185. + }
  3186. + #define FNORD(v, s) if (t & (v)) { \
  3187. +     if (i++ > 0) \
  3188. +         strcat(buf, "|"); \
  3189. +     strcat(buf, s); }
  3190. + char *
  3191. + c_typestr(t)
  3192. +     int t;
  3193. + {
  3194. +     register int i;
  3195. +     static char buf[64];
  3196. +     buf[0] = '\0';
  3197. +     if (t & ~(CT_ADDR|CT_DATE|CT_MYMBOX|CT_ADDRPARSE))
  3198. +         (void)sprintf(buf, "0x%x ", t);
  3199. +     strcat(buf, "<");
  3200. +     i = 0;
  3201. +     FNORD(CT_ADDR, "ADDR");
  3202. +     FNORD(CT_DATE, "DATE");
  3203. +     FNORD(CT_MYMBOX, "MYMBOX");
  3204. +     FNORD(CT_ADDRPARSE, "ADDRPARSE");
  3205. +     strcat(buf, ">");
  3206. +     return(buf);
  3207. + #undef FNORD
  3208. + }
  3209. + litputs(s)
  3210. +     register char *s;
  3211. + {
  3212. +     if (s) {
  3213. +         putc('"', stdout);
  3214. +         while (*s)
  3215. +             litputc(*s++);
  3216. +         putc('"', stdout);
  3217. +     } else
  3218. +         fputs("<nil>", stdout);
  3219. + }
  3220. + litputc(c)
  3221. +     char c;
  3222. + {
  3223. +     if (c & ~ 0177) {
  3224. +         putc('M', stdout);
  3225. +         putc('-', stdout);
  3226. +         c &= 0177;
  3227. +     }
  3228. +     if (c < 0x20 || c == 0177) {
  3229. +         if (c == '\b') {
  3230. +             putc('\\', stdout);
  3231. +             putc('b', stdout);
  3232. +         } else if (c == '\f') {
  3233. +             putc('\\', stdout);
  3234. +             putc('f', stdout);
  3235. +         } else if (c == '\n') {
  3236. +             putc('\\', stdout);
  3237. +             putc('n', stdout);
  3238. +         } else if (c == '\r') {
  3239. +             putc('\\', stdout);
  3240. +             putc('r', stdout);
  3241. +         } else if (c == '\t') {
  3242. +             putc('\\', stdout);
  3243. +             putc('t', stdout);
  3244. +         } else {
  3245. +             putc('^', stdout);
  3246. +             putc(c ^ 0x40, stdout);    /* DEL to ?, others to alpha */
  3247. +         }
  3248. +     } else
  3249. +         putc(c, stdout);
  3250. + }
  3251. *** ../mh-6.7-dist/uip/mhlsbr.c    Fri Dec 14 13:26:05 1990
  3252. --- uip/mhlsbr.c    Fri Jan 25 14:49:56 1991
  3253. ***************
  3254. *** 1,6 ****
  3255.   /* mhlsbr.c - implement the "nifty" message lister */
  3256.   #ifndef    lint
  3257. ! static char ident[] = "@(#)$Id: mhlsbr.c,v 1.14 90/04/05 14:58:08 sources Exp $";
  3258.   #endif    lint
  3259.   
  3260.   #include "../h/mh.h"
  3261. --- 1,6 ----
  3262.   /* mhlsbr.c - implement the "nifty" message lister */
  3263.   #ifndef    lint
  3264. ! static char ident[] = "@(#)$Id: mhlsbr.c,v 1.16 91/01/25 14:49:46 mh Exp $";
  3265.   #endif    lint
  3266.   
  3267.   #include "../h/mh.h"
  3268. ***************
  3269. *** 661,666 ****
  3270. --- 661,668 ----
  3271.       return ptoi (name, &c1 -> c_cwidth);
  3272.       if (uleq (name, "length"))
  3273.       return ptoi (name, &c1 -> c_length);
  3274. +     if (uleq (name, "nodashmunging"))
  3275. +     return (dashflg = 0);
  3276.   
  3277.       for (ap = triples; ap -> t_name; ap++)
  3278.       if (uleq (ap -> t_name, name)) {
  3279. ***************
  3280. *** 1503,1509 ****
  3281. --- 1505,1513 ----
  3282.   #include <sys/socket.h>
  3283.   #include <netinet/in.h>
  3284.   #include <netdb.h>
  3285. + #ifndef    hpux
  3286.   #include <arpa/inet.h>
  3287. + #endif
  3288.   
  3289.   static int  doface (c1)
  3290.   register struct mcomp *c1;
  3291. *** ../mh-6.7-dist/uip/mshcmds.c    Fri Dec 14 13:26:06 1990
  3292. --- uip/mshcmds.c    Tue Jan 15 09:46:58 1991
  3293. ***************
  3294. *** 1,6 ****
  3295.   /* mshcmds.c - command handlers in msh */
  3296.   #ifndef    lint
  3297. ! static char ident[] = "@(#)$Id: mshcmds.c,v 1.5 90/04/05 15:01:41 sources Exp $";
  3298.   #endif    lint
  3299.   
  3300.   #include "../h/mh.h"
  3301. --- 1,6 ----
  3302.   /* mshcmds.c - command handlers in msh */
  3303.   #ifndef    lint
  3304. ! static char ident[] = "@(#)$Id: mshcmds.c,v 1.6 91/01/14 16:48:39 mh Exp $";
  3305.   #endif    lint
  3306.   
  3307.   #include "../h/mh.h"
  3308. ***************
  3309. *** 468,474 ****
  3310.       "src +folder", 0,
  3311.   #define    FIFILE    6
  3312.       "file file", 0,
  3313. ! #define    FIHELP    7
  3314.       "help", 4,
  3315.   
  3316.       NULL, NULL
  3317. --- 468,478 ----
  3318.       "src +folder", 0,
  3319.   #define    FIFILE    6
  3320.       "file file", 0,
  3321. ! #define    FIPROC    7
  3322. !     "rmmproc program", 0,
  3323. ! #define    FINPRC    8
  3324. !     "normmproc", 0,
  3325. ! #define    FIHELP    9
  3326.       "help", 4,
  3327.   
  3328.       NULL, NULL
  3329. ***************
  3330. *** 523,528 ****
  3331. --- 527,534 ----
  3332.           case FISRC: 
  3333.           case FIDRFT:
  3334.           case FIFILE: 
  3335. +         case FIPROC:
  3336. +         case FINPRC:
  3337.               advise (NULLCP, "sorry, -%s not allowed!", fileswit[i].sw);
  3338.               return;
  3339.           }
  3340. ***************
  3341. *** 1717,1741 ****
  3342.       "filter filterfile", 0,
  3343.   #define    REFRMSW    11
  3344.       "form formfile", 0,
  3345. ! #define    REFRSW    12
  3346. !     "format", 5,
  3347. ! #define    RENFRSW    13
  3348. !     "noformat", 7,
  3349. ! #define    REINSW    14
  3350.       "inplace", 0,
  3351. ! #define    RENINSW    15
  3352.       "noinplace", 0,
  3353. ! #define    REQUSW    16
  3354.       "query", 0,
  3355. ! #define    RENQUSW    17
  3356.       "noquery", 0,
  3357. ! #define    REWHTSW    18
  3358.       "whatnowproc program", 0,
  3359. ! #define    RENWTSW    19
  3360.       "nowhatnow", 0,
  3361. ! #define    REWIDSW    20
  3362.       "width columns", 0,
  3363. ! #define    REHELP    21
  3364.       "help", 4,
  3365.   
  3366.       NULL, NULL
  3367. --- 1723,1743 ----
  3368.       "filter filterfile", 0,
  3369.   #define    REFRMSW    11
  3370.       "form formfile", 0,
  3371. ! #define    REINSW    12
  3372.       "inplace", 0,
  3373. ! #define    RENINSW    13
  3374.       "noinplace", 0,
  3375. ! #define    REQUSW    14
  3376.       "query", 0,
  3377. ! #define    RENQUSW    15
  3378.       "noquery", 0,
  3379. ! #define    REWHTSW    16
  3380.       "whatnowproc program", 0,
  3381. ! #define    RENWTSW    17
  3382.       "nowhatnow", 0,
  3383. ! #define    REWIDSW    19
  3384.       "width columns", 0,
  3385. ! #define    REHELP    20
  3386.       "help", 4,
  3387.   
  3388.       NULL, NULL
  3389. ***************
  3390. *** 1777,1784 ****
  3391.           case RENINSW: 
  3392.               continue;
  3393.   
  3394. -         case REFRSW: 
  3395. -         case RENFRSW: 
  3396.           case REQUSW:
  3397.           case RENQUSW:
  3398.           case RENDFSW:
  3399. --- 1779,1784 ----
  3400. *** ../mh-6.7-dist/uip/refile.c    Fri Dec 14 13:26:09 1990
  3401. --- uip/refile.c    Mon Jan 14 16:27:27 1991
  3402. ***************
  3403. *** 1,6 ****
  3404.   /* refile.c - file messages away */
  3405.   #ifndef    lint
  3406. ! static char ident[] = "@(#)$Id: refile.c,v 1.4 90/04/05 15:02:18 sources Exp $";
  3407.   #endif    lint
  3408.   
  3409.   #include "../h/mh.h"
  3410. --- 1,6 ----
  3411.   /* refile.c - file messages away */
  3412.   #ifndef    lint
  3413. ! static char ident[] = "@(#)$Id: refile.c,v 1.5 91/01/14 16:27:20 mh Exp $";
  3414.   #endif    lint
  3415.   
  3416.   #include "../h/mh.h"
  3417. ***************
  3418. *** 31,37 ****
  3419.   #define    FILESW    6
  3420.       "file file", 0,
  3421.   
  3422. ! #define    HELPSW    7
  3423.       "help", 4,
  3424.   
  3425.       NULL, NULL
  3426. --- 31,42 ----
  3427.   #define    FILESW    6
  3428.       "file file", 0,
  3429.   
  3430. ! #define    RPROCSW    7
  3431. !     "rmmproc program", 0,
  3432. ! #define    NRPRCSW 8
  3433. !     "normmproc", 0,
  3434. ! #define    HELPSW    9
  3435.       "help", 4,
  3436.   
  3437.       NULL, NULL
  3438. ***************
  3439. *** 138,143 ****
  3440. --- 143,156 ----
  3441.               if (!(cp = *argp++) || *cp == '-')
  3442.               adios (NULLCP, "missing argument to %s", argp[-2]);
  3443.               files[filep++] = path (cp, TFILE);
  3444. +             continue;
  3445. +         case RPROCSW: 
  3446. +             if (!(rmmproc = *argp++) || *rmmproc == '-')
  3447. +             adios (NULLCP, "missing argument to %s", argp[-2]);
  3448. +             continue;
  3449. +         case NRPRCSW: 
  3450. +             rmmproc = (char *)0;
  3451.               continue;
  3452.           }
  3453.       if (*cp == '+' || *cp == '@') {
  3454. *** ../mh-6.7-dist/uip/replsbr.c    Fri Dec 14 13:26:09 1990
  3455. --- uip/replsbr.c    Fri Jan 25 14:08:57 1991
  3456. ***************
  3457. *** 1,6 ****
  3458.   /* replsbr.c - routines to help repl along... */
  3459.   #ifndef    lint
  3460. ! static char ident[] = "@(#)$Id: replsbr.c,v 1.9 90/11/05 11:38:43 mh Exp $";
  3461.   #endif    lint
  3462.   
  3463.   #include "../h/mh.h"
  3464. --- 1,6 ----
  3465.   /* replsbr.c - routines to help repl along... */
  3466.   #ifndef    lint
  3467. ! static char ident[] = "@(#)$Id: replsbr.c,v 1.10 91/01/17 15:29:27 mh Exp $";
  3468.   #endif    lint
  3469.   
  3470.   #include "../h/mh.h"
  3471. ***************
  3472. *** 132,137 ****
  3473. --- 132,142 ----
  3474.       FINDCOMP (cptr, "fcc");
  3475.       if (cptr)
  3476.           cptr->c_text = getcpy (fcc);
  3477. +     }
  3478. +     if (cp = getenv("USER")) {
  3479. +     FINDCOMP (cptr, "user");
  3480. +     if (cptr)
  3481. +         cptr->c_text = getcpy(cp);
  3482.       }
  3483.       if (!ccme)
  3484.       (void) ismymbox ((struct mailname *)0); /* XXX */
  3485. *** ../mh-6.7-dist/uip/show.c    Fri Dec 14 13:26:11 1990
  3486. --- uip/show.c    Wed Dec 19 08:48:51 1990
  3487. ***************
  3488. *** 1,6 ****
  3489.   /* show.c - list messages */
  3490.   #ifndef    lint
  3491. ! static char ident[] = "@(#)$Id: show.c,v 1.2 90/04/05 15:03:16 sources Exp $";
  3492.   #endif    lint
  3493.   
  3494.   #include "../h/mh.h"
  3495. --- 1,6 ----
  3496.   /* show.c - list messages */
  3497.   #ifndef    lint
  3498. ! static char ident[] = "@(#)$Id: show.c,v 1.3 90/12/19 08:48:39 mh Exp $";
  3499.   #endif    lint
  3500.   
  3501.   #include "../h/mh.h"
  3502. ***************
  3503. *** 246,252 ****
  3504.       if (nshow)
  3505.       proc = "/bin/cat";
  3506.       else {
  3507. !     (void) putenv ("mhfolder", folder);
  3508.       if (strcmp (r1bindex (showproc, '/'), "mhl") == 0) {
  3509.           vec[0] = "mhl";
  3510.           (void) mhl (vecp, vec);
  3511. --- 246,253 ----
  3512.       if (nshow)
  3513.       proc = "/bin/cat";
  3514.       else {
  3515. !     if (folder)
  3516. !         (void) putenv ("mhfolder", folder);
  3517.       if (strcmp (r1bindex (showproc, '/'), "mhl") == 0) {
  3518.           vec[0] = "mhl";
  3519.           (void) mhl (vecp, vec);
  3520. *** ../mh-6.7-dist/uip/slocal.c    Fri Dec 14 13:26:11 1990
  3521. --- uip/slocal.c    Thu Jan 10 14:39:20 1991
  3522. ***************
  3523. *** 1,6 ****
  3524.   /* slocal.c - MH style mailer to write to a local user's mailbox */
  3525.   #ifndef    lint
  3526. ! static char ident[] = "@(#)$Id: slocal.c,v 1.8 90/04/05 14:58:46 sources Exp $";
  3527.   #endif    lint
  3528.   
  3529.   /* This program implements mail delivery in the MH/MMDF style.
  3530. --- 1,6 ----
  3531.   /* slocal.c - MH style mailer to write to a local user's mailbox */
  3532.   #ifndef    lint
  3533. ! static char ident[] = "@(#)$Id: slocal.c,v 1.9 91/01/10 14:39:00 mh Exp $";
  3534.   #endif    lint
  3535.   
  3536.   /* This program implements mail delivery in the MH/MMDF style.
  3537. ***************
  3538. *** 515,527 ****
  3539.           break;
  3540.       }
  3541.   
  3542. !     if (accept) {
  3543. !         if (status == NOTOK) {
  3544. !         won = 0;
  3545. !         break;
  3546. !         }
  3547.           won++;
  3548. -     }
  3549.       }
  3550.   
  3551.       (void) fclose (fp);
  3552. --- 515,522 ----
  3553.           break;
  3554.       }
  3555.   
  3556. !     if (accept && status == OK)
  3557.           won++;
  3558.       }
  3559.   
  3560.       (void) fclose (fp);
  3561. *** ../mh-6.7-dist/uip/sortm.c    Fri Dec 14 13:26:11 1990
  3562. --- uip/sortm.c    Wed Dec 19 10:02:32 1990
  3563. ***************
  3564. *** 1,7 ****
  3565.   /* sortm.c - sort messages in a folder by date/time */
  3566.   /* 21Apr90 do subject sorts too - from V. Jacobson */
  3567.   #ifndef    lint
  3568. ! static char ident[] = "@(#)$Id: sortm.c,v 1.12 90/04/05 15:02:27 sources Exp $";
  3569.   #endif    lint
  3570.   
  3571.   #include "../h/mh.h"
  3572. --- 1,7 ----
  3573.   /* sortm.c - sort messages in a folder by date/time */
  3574.   /* 21Apr90 do subject sorts too - from V. Jacobson */
  3575.   #ifndef    lint
  3576. ! static char ident[] = "@(#)$Id: sortm.c,v 1.14 90/12/19 10:02:16 mh Exp $";
  3577.   #endif    lint
  3578.   
  3579.   #include "../h/mh.h"
  3580. ***************
  3581. *** 499,522 ****
  3582.       char *newname,
  3583.         oldname[BUFSIZ];
  3584.   
  3585. !     nxt = mlist[msg] - smsgs;
  3586. !     mlist[msg] = 0;
  3587. !     old = smsgs[nxt].s_msg;
  3588. !     new = smsgs[msg].s_msg;
  3589. !     (void) strcpy (oldname, m_name (old));
  3590. !     newname = m_name (new);
  3591. !     if (verbose)
  3592. !     printf ("message %d becomes message %d\n", old, new);
  3593.   
  3594. !     if (rename (oldname, newname) == NOTOK)
  3595. !     adios (newname, "unable to rename %s to", oldname);
  3596.   
  3597. !     mp->msgstats[new] = mp->msgstats[old];
  3598. !     if (mp->curmsg == old)
  3599. !     m_setcur (mp, new);
  3600.   
  3601. !     if (nxt != endmsg)
  3602. !     rename_chain (mp, mlist, nxt, endmsg);
  3603.   }
  3604.   
  3605.   static void
  3606. --- 499,528 ----
  3607.       char *newname,
  3608.         oldname[BUFSIZ];
  3609.   
  3610. !     for (;;) {
  3611. !     nxt = mlist[msg] - smsgs;    /* mlist[msg] is a ptr into smsgs */
  3612. !     mlist[msg] = (struct smsg *)0;
  3613. !     old = smsgs[nxt].s_msg;
  3614. !     new = smsgs[msg].s_msg;
  3615. !     (void) strcpy (oldname, m_name (old));
  3616. !     newname = m_name (new);
  3617. !     if (verbose)
  3618. !         printf ("message %d becomes message %d\n", old, new);
  3619.   
  3620. !     if (rename (oldname, newname) == NOTOK)
  3621. !         adios (newname, "unable to rename %s to", oldname);
  3622.   
  3623. !     mp->msgstats[new] = mp->msgstats[old];
  3624. !     if (mp->curmsg == old)
  3625. !         m_setcur (mp, new);
  3626.   
  3627. !     if (nxt == endmsg) 
  3628. !         break;
  3629. !     msg = nxt;
  3630. !     }
  3631. ! /*    if (nxt != endmsg); */
  3632. ! /*    rename_chain (mp, mlist, nxt, endmsg); */
  3633.   }
  3634.   
  3635.   static void
  3636. ***************
  3637. *** 530,540 ****
  3638.            new;
  3639.       short        stats;
  3640.       char         f1[BUFSIZ],
  3641. -              f2[BUFSIZ],
  3642.                tmpfil[BUFSIZ];
  3643.       register struct smsg *sp;
  3644.   
  3645. !     (void) strcpy (tmpfil, m_scratch ("", invo_name));
  3646.   
  3647.       for (i = 0; i < nmsgs; i++) {
  3648.       if (! (sp = mlist[i])) 
  3649. --- 536,545 ----
  3650.            new;
  3651.       short        stats;
  3652.       char         f1[BUFSIZ],
  3653.                tmpfil[BUFSIZ];
  3654.       register struct smsg *sp;
  3655.   
  3656. !     (void) strcpy (tmpfil, m_name (mp->hghmsg + 1));
  3657.   
  3658.       for (i = 0; i < nmsgs; i++) {
  3659.       if (! (sp = mlist[i])) 
  3660. *** ../mh-6.7-dist/uip/ttyw.c    Fri Dec 14 13:26:12 1990
  3661. --- uip/ttyw.c    Fri Jan 25 14:49:57 1991
  3662. ***************
  3663. *** 12,18 ****
  3664. --- 12,20 ----
  3665.   #include <sys/socket.h>
  3666.   #include <netinet/in.h>
  3667.   #include <netdb.h>
  3668. + #ifndef    hpux
  3669.   #include <arpa/inet.h>
  3670. + #endif
  3671.   #include "ttyd.h"
  3672.   #include "ttym.c"
  3673.   
  3674. *** ../mh-6.7-dist/uip/whatnowsbr.c    Fri Dec 14 13:26:14 1990
  3675. --- uip/whatnowsbr.c    Wed Jan 23 15:43:36 1991
  3676. ***************
  3677. *** 1,6 ****
  3678.   /* whatnowsbr.c - the WhatNow shell */
  3679.   #ifndef    lint
  3680. ! static char ident[] = "@(#)$Id: whatnowsbr.c,v 1.6 90/04/05 14:59:26 sources Exp $";
  3681.   #endif    lint
  3682.   
  3683.   #include "../h/mh.h"
  3684. --- 1,6 ----
  3685.   /* whatnowsbr.c - the WhatNow shell */
  3686.   #ifndef    lint
  3687. ! static char ident[] = "@(#)$Id: whatnowsbr.c,v 1.10 91/01/23 15:43:31 mh Exp $";
  3688.   #endif    lint
  3689.   
  3690.   #include "../h/mh.h"
  3691. ***************
  3692. *** 335,351 ****
  3693.   
  3694.       default: 
  3695.           if (status = pidwait (pid, NOTOK)) {
  3696.           if (((status & 0xff00) != 0xff00)
  3697.               && (!reedit || (status & 0x00ff)))
  3698.               if (!use && (status & 0xff00) &&
  3699. !                 (rename (file, m_backup (file)) != NOTOK)) {
  3700. !             advise (NULLCP, "problems with edit--%s deleted", file);
  3701.               }
  3702.               else
  3703.               advise (NULLCP, "problems with edit--%s preserved",
  3704.                   file);
  3705. !         status = -2;
  3706.           break;
  3707.           }
  3708.   
  3709.           reedit++;
  3710. --- 335,362 ----
  3711.   
  3712.       default: 
  3713.           if (status = pidwait (pid, NOTOK)) {
  3714. + #ifdef    SUNVIBUG
  3715. +         if ((cp = r1bindex (*ed, '/'))
  3716. +             && strcmp (cp, "vi") == 0
  3717. +             && (status & 0x00ff) == 0)
  3718. +             status = 0;
  3719. +         else {
  3720. + #endif
  3721.           if (((status & 0xff00) != 0xff00)
  3722.               && (!reedit || (status & 0x00ff)))
  3723.               if (!use && (status & 0xff00) &&
  3724. !                 (rename (file, cp = m_backup (file)) != NOTOK)) {
  3725. !             advise (NULLCP, "problems with edit--draft left in %s",
  3726. !                 cp);
  3727.               }
  3728.               else
  3729.               advise (NULLCP, "problems with edit--%s preserved",
  3730.                   file);
  3731. !         status = -2;    /* maybe "reedit ? -2 : -1"? */
  3732.           break;
  3733. + #ifdef    SUNVIBUG
  3734. +         }
  3735. + #endif
  3736.           }
  3737.   
  3738.           reedit++;
  3739. *** ../mh-6.7-dist/zotnet/mts/lock.c    Fri Dec 14 13:26:24 1990
  3740. --- zotnet/mts/lock.c    Fri Jan 25 09:46:47 1991
  3741. ***************
  3742. *** 1,6 ****
  3743.   /* lock.c - universal locking routines */
  3744.   #ifndef    lint
  3745. ! static char ident[] = "@(#)$Id: lock.c,v 2.3 90/04/05 15:04:28 sources Exp $";
  3746.   #endif    lint
  3747.   
  3748.   #ifdef    MMDFONLY
  3749. --- 1,6 ----
  3750.   /* lock.c - universal locking routines */
  3751.   #ifndef    lint
  3752. ! static char ident[] = "@(#)$Id: lock.c,v 2.4 91/01/18 08:43:29 mh Exp Locker: mh $";
  3753.   #endif    lint
  3754.   
  3755.   #ifdef    MMDFONLY
  3756. ***************
  3757. *** 24,29 ****
  3758. --- 24,33 ----
  3759.   #include <sys/stat.h>
  3760.   #ifdef    LOCKF
  3761.   #include <sys/errno.h>
  3762. + #include <sys/file.h>
  3763. + #ifndef    F_ULOCK
  3764. + #include <unistd.h>
  3765. + #endif
  3766.   #endif    LOCKF
  3767.   
  3768.   
  3769.